Linux下进程栈内存管理的一点细节
在阅读《嵌入式linux性能详解》时,提到Linux系统中进程栈所使用的物理内存只会增长,不会减少,实际验证了一下,在2.6.22的内核下:
代码如下:
#include <stdlib.h>#include <stdio.h>#include <unistd.h>int num = 100;pid_t pid;char cmd_buf[256];void foo_func(){ char foo_buf[1024]; if( num > 0 ) { --num; system( cmd_buf ); foo_func(); }}int main( int argc, char** argv ){ pid = getpid(); sprintf( cmd_buf, "cat /proc/%d/maps | grep stack", pid ); system( cmd_buf ); foo_func(); system( cmd_buf ); return 0;}