开发平台(Platform): (Ex: Win10, Linux, ...)
Linux 4.12.13-1-ARCH x86_64
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
gcc 7.2.0
Glibc 2.26
问题(Question):
我想要在main里面malloc后把指标传到thread里,在thread结束前free内存。
结果内存用量会随着操作次数渐渐变大。
程式大致上长像这样:
void *test(void *p)
{
pthread_detach(pthread_self());
free(p);
pthread_exit(NULL);
}
int main(int argc, char *argv[])
{
... other code ...
pthread_t tid;
void *p = malloc(8*1024*1024);
pthread_create(&tid, NULL, test, p);
... other code ...
}
在main里面做了很多次malloc、pthread_create的动作。
有确认过free都有执行到,如果不做malloc、free,单纯建立theard然后退出都正常。
不过两者合在一起用的时候就渐渐的把内存吃掉了。
还有哪里可能有内存没释放到吗?
预期的正确结果(Expected Output):
内存用量不会一直增加
错误结果(Wrong Output):
内存用量渐渐增加
程式码(Code):(请善用置底文网页, 记得排版)
完整的程式:https://ideone.com/SKWT5Q
补充说明(Supplement):
1.执行程式每次被吃的内存量会有一点点不一样。
2.如果是在main里面free的话就不会这样。