下面是一个线程的例子。
void* thrfun(void* arg)
{
int var;
var = 7;
pthread_exit(NULL);
}
var退出时会发生什么。var是已分配的,还是仍然作为泄漏存在于内存中?
线程函数是否仍然是一个函数,并且内部的所有变量都是局部的,这意味着它们在退出时被取消分配?
在thrfun(void* arg)
中声明的局部变量被放置在线程的堆栈中(如果系统有堆栈),并且在函数返回时将被释放,就像其他函数一样。
是var已分配,还是var仍然作为泄漏坐在内存中?
var
占用的内存将被释放。
如果您使用手动内存分配,例如使用malloc
,那么该内存将保持分配(如果系统有堆,则在堆上),直到您使用free
它,也就像使用任何其他函数一样。