虚拟内存指的是,程序向操作系统所申请的内存空间,这个空间不一定会使用,这个空间也可以比服务器实际可提供内存空间大。
实际内存是程序所申请的内存页与物理内存中的物理页进行一一映射的内存空间,这个空间永远不会比物理内存大。
C语言内存空间分配函malloc()数简介.调用形式:
(类型说明符*)malloc(size)
功能:在内存的动态存储区中分配一块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。
说明:
(1)“类型说明符”表示把该区域用于何种数据类型。
(2)(类型说明符*)表示把返回值强制转换为该类型指针。
(3)“size”是一个无符号数。
例如:
pc=(char*)malloc(100);
表示分配100个字节的内存空间,并强制转换为字符数组类型,函数的返回值为指向该字符数组的指针,把该指针赋予指针变量pc。
#include编译运行此程序并查看此进程内存占用情况#include int main(int argc, char const *argv[]) { int *p; p=(int *)malloc(8000000000); sleep(90); return 0; }
[zyq@zyq ~]$ ps aux | grep a.out USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND zyq 19931 0.0 0.0 7816672 348 pts/2 S+ 15:46 0:00 ./a.out zyq 19935 0.0 0.0 9044 664 pts/0 S+ 15:46 0:00 grep --color=auto a.out
VSZ代表虚拟内存,单位K,RSS为真实内存,单位K。
结论通过实验可以发现程序申请了8000000000/1024=7.812500G的虚拟地址空间,和展示的7816672 基本吻合,剩余的部分(7.816672-7.812500)是进程加载别的内容所申请的内存空间。



