3

假设我有以下代码:

while(TRUE) {
  pthread_t *thread = (pthread_t *) malloc(sizeof(pthread_t));
  pthread_create(thread, NULL, someFunction, someArgument);
  pthread_detach(*thread);
  sleep(10);
}

分离的线程会释放 malloc 分配的内存,还是我现在必须做的事情?

4

2 回答 2

10

不, pthread_create()无法知道传递给它的线程指针是动态分配的。pthreads 在内部不使用这个值;它只是将新的线程 ID 返回给调用者。您不需要动态分配该值;您可以改为传递局部变量的地址:

pthread_t thread;
pthread_create(&thread, NULL, someFunction, someArgument);
于 2008-09-25T20:43:08.870 回答
1

您需要自己释放内存。最好在堆栈上简单地分配 pthread_t 变量,而不是在堆上。

于 2008-09-25T21:00:14.213 回答