============================================================
博文原创,转载请声明出处
电子咖啡(原id蓝岩)
============================================================
翻译自:http://stackoverflow.com/questions/6883032/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(m);
那么我是否需要调用 free(m)
答:
你需要释放内存,pthread_mutex_destroy并不能为你释放。
为什么呢?
因为下面的调用方法是被允许的:
pthread_mutex_t m;
pthread_mutex_init(&m, NULL);
pthread_mutex_destroy(&m); /* Can't free &m. 这里是引用*/
你可能传入一个指针,也可能传入引用,函数并不能区分,因此,如果你声明的是指针,则需要手动free