![](/img/trans.png)
[英]What happens if I do not call pthread_mutex_destroy when using PTHREAD_PROCESS_SHARED
[英]Do I need to use delete after pthread_mutex_destroy
假设我用
pthread_mutex_t *m = new pthread_mutex_t;
pthread_mutex_init(m, NULL);
初始化互斥锁。 然后,完成后,调用pthread_mutex_destroy,我需要使用
delete m;
释放所有资源?
您需要释放内存,因为pthread_mutex_destroy
无法替您完成 。
为什么pthread_mutex_destroy不为您释放内存? 因为您可以这样做:
pthread_mutex_t m;
pthread_mutex_init(&m, NULL);
pthread_mutex_destroy(&m); /* Can't free &m. */
您可以使用valgrind
尝试:
==836== LEAK SUMMARY:
==836== definitely lost: 24 bytes in 1 blocks
使用pthread_mutex_init
初始化互斥锁是另一个方面。 而为对象(类型为pthread_mutex_t
)分配内存是不同的方面。
使用某些库的初始化例程不同于在堆或堆栈上为其分配内存。 就像将FILE *作为局部变量,然后使用fopen
初始化文件指针一样
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.