关于局部变量的释放问题

问题遇到的现象和发生背景

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;
}
运行结果及报错内容

img

为什么在函数结束后,局部变量的地址还能打印出来,而不是NULL?

释放变量其实是指将编译器中对于该地址的控制给释放,但这块地址依然是存在的,但是已经没有受控的指针指向它。

地址本身就是存在的啊,只是里面装的东西释放了啊。