最近看了很多文章 看的我都蒙了 为什么说变量的生命周期结束的时候 变量所占的内存不一定会被回收呢 难道不是生命周期结束的时候就是所占内存被回收的时候吗????????????????????????????????疯了!!!!!!!!!!!!!! 如果不是生命周期结束的时候 内存就被回收 那生命周期这个概念还有啥用????????
这个我到是知道 那局部变量呢 它的生命期结束内存不就释放了吗
追答局部变量也不一定。如果局部变量被定义为Static,那么该变量是在静态存储区分配的内存,会一直持续到程序结束。一般的局部变量(自动存储的)是在堆栈区里,生命周期结束了就会被自动销毁。
我问的到不是这个意思 就是假如一个局部变量 不是出了局部作用域之后 生命周期就结束 生命周期结束 不就是所占用的内存被回收了吗
追答那是不一定的
追问为什么是不一定呢 那生命期这个概念还有啥用???
追答你定义一个局部的动态数组 当你用完之后不释放空间的话 那么这个空间就没有被释放
追问不不 不是动态的 假如就是这样
void fun()
{
{
int a = 10;
}//@@@
}
a这个变量 不是出了@@@这里 生命期就终结 内存就被回收了吗
这里是的一出@@@就结束
追问是一出@@@就结束 同时a所占用的内存也被回收了吧
追答是最后一个}结束 a的内存就被回收