为什么第一个的局部变量没有被释放
一、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
第一个和局部变量是否释放有关系吗?
没有关系,是因为放在代码区吗,还是因为什么? Mo° 发表于 2022-5-9 17:24
没有关系,是因为放在代码区吗,还是因为什么?
函数返回的是一个立即数,和局部变量是否释放没有关系 wp231957 发表于 2022-5-9 17:25
函数返回的是一个立即数,和局部变量是否释放没有关系
哦哦,懂了,谢谢大佬
页:
[1]