进程XXX占用了多少内存?这是个经常被问到,也经常被答错的问题。Linux进程的内存分配是个比较复杂的话题,而Linux上的工具往往把这个问题过分简单化,因此引出不少误解和困惑。首先把ps, top这类工具扔掉,然后看这么一个简单程序:
[root@pczou pczou]# cat ./prog.c
#include <
stdio.h>
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#define ONEM (1024*1024)
int func()
{
char s[16*ONEM];
char* p;
p = malloc(32*ONEM);
pause();
return 0;
}
int main()
{
printf("pid: %d\n", getpid());
func();
return 0;
}
其中func()这个函数分配了32MB的内存,以及16MB的
堆栈。
原文见:
http://pczou.bokee.com/5944730.html参考资料:http://pczou.bokee.com/5944730.html
本回答被提问者采纳