[英]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.