我有一個輸入case語句的代碼塊。如果遇到正確的案例,我需要創建一個新線程並繼續執行工作。這種case語句可以多次調用,創建多個同時運行的線程。何時釋放C中動態分配的pthread_t指針?
因此,我想我需要創建一個pthread_t *,malloc一些內存,然後調用pthread_create()。但是,我仍然需要釋放pthread_t *嗎?我不想創建內存泄漏。如果我需要釋放它,我該如何以及在哪裏釋放它?
例:
case MY_CASE:
;
pthread_t* foo = (pthread_t*)malloc(sizeof(pthread_t));
pthread_create(foo, NULL, SomeFunction, &SomeParameters);
.
.
.
later
.
.
.
free(foo); // Should this be in the code? If so, where?
/* I need to ensure the main thread keeps running. So, I cannot use pthread_join() */
你加入你的話題?如果是的話,我相信你做到了。 –
不,我不能使用pthread_join(),因爲我需要執行主線程才能繼續。使用連接將掛起主線程,直到目標線程終止。 – Maxthecat
只要沒有線程需要它,就可以使用'free()'釋放結構,如圖所示。但是,如果您不知道該結構是否有線程描述,那麼您可能無法可靠地解決問題。 –