簡體   English   中英

當線程退出時,線程中聲明的變量會發生什么?

[英]What happens to variables declared in a thread when the thread exits?

這是一個線程的示例。


void* thrfun(void* arg)
{
    int var;
    var = 7;
    
    
    pthread_exit(NULL);
}

var 退出時會發生什么。 是 var de 分配的,還是 var 仍然作為泄漏存在於內存中?

線程函數是否仍然只是一個函數,並且內部的所有變量都是本地的,這意味着它們在退出時被取消分配?

thrfun(void* arg)中聲明的局部變量被放置在線程的堆棧中(如果系統有堆棧),並且將在函數返回后立即釋放,就像任何其他函數一樣。

是 var de 分配的,還是 var 仍然作為泄漏存在於內存中?

var占用的內存將被釋放。

如果您改為手動分配內存,例如使用malloc ,則該內存將保持分配狀態(在堆上,如果系統有堆),直到您free它,就像使用任何其他函數一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM