pthread_detach会为我管理我的记忆吗?
-
02-07-2019 - |
题
假设我有以下代码:
while(TRUE) {
pthread_t *thread = (pthread_t *) malloc(sizeof(pthread_t));
pthread_create(thread, NULL, someFunction, someArgument);
pthread_detach(*thread);
sleep(10);
}
分离的线程是否会释放malloc分配的内存,还是我现在需要做的事情?
解决方案
没有。 pthread_create()无法知道传递给它的线程指针是否已动态分配。 pthreads不会在内部使用此值;它只是将新的线程ID返回给调用者。您不需要动态分配该值;您可以改为传递局部变量的地址:
pthread_t thread;
pthread_create(&thread, NULL, someFunction, someArgument);
其他提示
你需要自己释放记忆。最好只在堆栈上分配pthread_t变量而不是堆。
不隶属于 StackOverflow