Mo° 发表于 2022-5-9 16:22:18

为什么第一个的局部变量没有被释放

一、
int i()
{
        int j=10;
        return j;
}
intmain()
{
        int k = i();
        cout << k << endl;
        cout << k << endl;
        cout << k << endl;
}
输出的是:10,10,10      局部变量内存没有被释放

二、
int* i()
{
        int j = 10;
        return &j;
}
int main()
{       
        int* k = i();
        cout << *k << endl;
        cout << *k << endl;
        cout << *k << endl;
}
输出的是:10,乱码,乱码      输出了一次, 局部变量内存被释放了

三、
int& i()
{
        int j = 10;
        return j;
}
int main()
{       
        int& k = i();
        cout << k << endl;
        cout << k << endl;
        cout << k << endl;
}
输出的是:10,乱码,乱码,   也是输出了一次,局部变量内存被释放了



wp231957 发表于 2022-5-9 16:35:20

第一个和局部变量是否释放有关系吗?

Mo° 发表于 2022-5-9 17:24:18

wp231957 发表于 2022-5-9 16:35
第一个和局部变量是否释放有关系吗?

没有关系,是因为放在代码区吗,还是因为什么?

wp231957 发表于 2022-5-9 17:25:33

Mo° 发表于 2022-5-9 17:24
没有关系,是因为放在代码区吗,还是因为什么?

函数返回的是一个立即数,和局部变量是否释放没有关系

Mo° 发表于 2022-5-9 17:27:32

wp231957 发表于 2022-5-9 17:25
函数返回的是一个立即数,和局部变量是否释放没有关系

哦哦,懂了,谢谢大佬
页: [1]
查看完整版本: 为什么第一个的局部变量没有被释放