C语言 当线程退出时,在线程中声明的变量会发生什么?



下面是一个线程的例子。


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


pthread_exit(NULL);
}

var退出时会发生什么。var是已分配的,还是仍然作为泄漏存在于内存中?

线程函数是否仍然是一个函数,并且内部的所有变量都是局部的,这意味着它们在退出时被取消分配?

thrfun(void* arg)中声明的局部变量被放置在线程的堆栈中(如果系统有堆栈),并且在函数返回时将被释放,就像其他函数一样。

是var已分配,还是var仍然作为泄漏坐在内存中?

var占用的内存将被释放。

如果您使用手动内存分配,例如使用malloc,那么该内存将保持分配(如果系统有堆,则在堆上),直到您使用free它,也就像使用任何其他函数一样。

最新更新