程序中我pthread_create()创建了一个线程,然后pthread_join()后,理论来说是应该全部释放了吧,但是我用top看内存占用发现创建线程占用的几M堆栈空间并没有减少,这是为什么啊?
#include <stdio.h> #include <stdlib.h> #include <pthread.h> pthread_t id; void * thread_1(void *arg) { pthread_exit(0); } int main() { int i ; sleep(10); for ( i = 0; i < 100; i++) { pthread_create(&id, NULL, thread_1, NULL); // pthread_detach(id); usleep(10000); pthread_join(id, 0); } printf("father sleep 5\n"); sleep(5); }
例如这段代码,例如,我程序刚开始运行的时候内存占用2m,pthread_create后内存占用变成了10M,然后pthread_join释放后,内存占用依旧是10M,并没有变化,但是,再次创建线程的时候,内存占用也没有增大,这是为什么?
方案推荐指数:20
如果是gcc的话,glibc会缓存住内存,不会立刻释放给系统