繁体   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