C语言相关资料提到:局部函数里声明的局部变量在函数结束后会被释放。请问怎么理解这个释放,释放的是什么?
#include
int* pa, ** qa;
void swa()
{
int a = 1;
int* p = &a;
printf("%p\n", p);
pa = p;
int** q = &p;
printf("%p\n", q);
qa = q;
}
int main()
{
swa();
printf("%p\n", pa);
printf("%p\n", qa);
return 0;
}
为什么在函数结束后,局部变量的地址还能打印出来,而不是NULL?
释放变量其实是指将编译器中对于该地址的控制给释放,但这块地址依然是存在的,但是已经没有受控的指针指向它。
地址本身就是存在的啊,只是里面装的东西释放了啊。