我编写了一个程序,其唯一目的是分配给定量的内存,以便我可以看到它对Ubuntu 12.04系统监视器的影响。 这就是我写的
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv)
{
if(argc<2)
exit(-1);
int *mem=0;
int kB = 1024*atoi(argv[1]);
mem = malloc(kB);
if(mem==NULL)
exit(-2);
sleep(3);
free(mem);
exit(0);
}
我使用sleep()
以便程序不会立即结束,以便系统监视器有时间显示内存中的更改。
发生了什么(我很困惑)是即使我分配了1GB,系统监视器也没有显示内存变化!为什么会这样?
我认为原因可能是因为从未访问过分配的内存所以我尝试在sleep()
之前插入以下内容
int i;
for(i=0; i<kB/sizeof(int); i++)
mem[i]=i;
但这对系统监视器中的图形也没有影响。
感谢。