pthread_create()使用detach分离后仍有内存泄漏
来源:互联网 发布:zealer fix淘宝店 编辑:程序博客网 时间:2024/06/06 19:03
valgrind 工具安装使用
使用valgrind 工具检查内存泄漏
gcc -g -o out test.c -lpthread
valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./out
使用了两种方案分离方案,仍存在内存泄漏情况,于是把两个分离方案测试例子列出来,希望对大家有帮助。如果有好的解决方案,请留言,多谢
pthread_join(threadid,NULL);
pthread_detach(pthread_self());
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
--------------------------------------------------------------------------------------------------
1 无泄漏
#include<stdio.h>
#include<pthread.h>
void* test(){
sleep(2);
printf("ok\n");
}
int main(int argc, char** argv){
pthread_t threadid;
pthread_create(&threadid, NULL, test, NULL);
pthread_join(threadid,NULL);
return 1;
}
--------------------------------------------------------------------------------------------------
2 泄漏
void* test(){
printf("ok\n");
}
int main(int argc, char** argv){
pthread_t threadid;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&threadid, &attr, test, NULL); 泄漏
pthread_attr_destroy(&attr);
return 1;
}
--------------------------------------------------------------------------------------------------
3 无泄漏
void* test(){
printf("ok\n");
}
int main(int argc, char** argv){
pthread_t threadid;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&threadid, &attr, test, NULL); 无泄漏
sleep(1); //线程运行完成。
pthread_attr_destroy(&attr);
return 1;
}
--------------------------------------------------------------------------------------------------
4 泄漏
void* test(){
sleep(2);
printf("ok\n");
}
int main(int argc, char** argv){
pthread_t threadid;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&threadid, &attr, test, NULL); 无泄漏
sleep(1);
pthread_attr_destroy(&attr);
return 1;
}
--------------------------------------------------------------------------------------------------
5 泄漏
void* test(){
pthread_detach(pthread_self());
printf("ok\n");
}
int main(int argc, char** argv){
pthread_t threadid;
pthread_attr_t attr;
pthread_create(&threadid, NULL, test, NULL);
return 1;
}
--------------------------------------------------------------------------------------------------
6 无泄漏
void* test(){
pthread_detach(pthread_self());
printf("ok\n");
}
int main(int argc, char** argv){
pthread_t threadid;
pthread_attr_t attr;
pthread_create(&threadid, NULL, test, NULL);无泄漏
sleep(1);
return 1;
}
--------------------------------------------------------------------------------------------------
阅读全文
0 0
- pthread_create()使用detach分离后仍有内存泄漏
- pthread_create创建线程后必须使用join或detach释放线程资源[内存泄漏]
- 一个隐蔽的内存泄漏——pthread_create后没有detach导致内存持续增长
- 解决了一个隐蔽的内存泄漏——pthread_create后没有detach导致内存持续增长
- 解决了一个隐蔽的内存泄漏——pthread_create后没有detach导致内存持续增长
- CMemFile Detach 内存泄漏
- 正确使用pthread_create,防止内存泄漏
- 正确使用pthread_create,防止内存泄漏
- 正确使用pthread_create,防止内存泄漏
- pthread_create 内存泄漏 valgrind
- pthread_create 内存泄漏 valgrind
- pthread_create 内存泄漏 valgrind
- pthread_create 内存泄漏 valgrind
- pthread_create 内存泄漏
- pthread_create后没有detach导致内存持续增长
- pthread_create后没有detach导致内存持续增长
- Linux pthread_create内存泄漏问题
- pthread_create 内存泄漏 valgrind
- Android微信支付流程及返回码-1之坑
- spark on yarn 在HA nn1关闭的时候问题
- Django中使用MySQL添加中文乱码的问题解决
- 内部分享内容,原作lvxy
- Libcef源码下载与编译
- pthread_create()使用detach分离后仍有内存泄漏
- Android Studio3.0.0以上APP多渠道打包
- mybatis foreach标签的解释 与常用之处 转自bareheadzzq
- 今天好高兴,开通CSDN
- opencv3 VideoWriter 不能保存视频
- 使用ControllerAdvice获取controller接口@ResponseBody返回值
- 支付宝支付之APP支付接口 服务器端
- Android 二级列表仿京东购物车 《H》
- Ubuntu远程连接其他电脑Ubuntu