假设我有以下代码:

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变量而不是堆。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top