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