繁体   English   中英

pthread_mutex_destroy之后是否需要使用delete

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM