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()には、渡された thread ポインターが動的に割り当てられたことを知る方法がありません。 pthreadは、この値を内部的に使用しません。新しいスレッドIDを呼び出し元に返すだけです。その値を動的に割り当てる必要はありません。代わりにローカル変数のアドレスを渡すことができます:
pthread_t thread;
pthread_create(&thread, NULL, someFunction, someArgument);
他のヒント
自分でメモリを解放する必要があります。ヒープではなく、スタックにpthread_t変数を単に割り当てることが望ましいでしょう。
所属していません StackOverflow