我只是在学习C++基础知识,尝试了以下代码:
int& func()
{
int localnum = 10;
return localnum;
}
int main()
{
int &i = func();
cout<<"value : "<<i<<endl;
cout<<"value : "<<i<<endl;
return 0;
}
这里,我返回一个本地变量作为引用(实际上我不应该这样做,但我这样做只是为了学习行为)。
我认为即使func()
执行完成,localnum
的值仍将保留并且不会被销毁,直到任何进程使用内存空间(但设置一些位/标志以便剩余进程将此内存块视为自由并可以使用它) - 如果我错了,请纠正我
为了检查这个问题,我打印了i
的值。在我的情况下,这是输出结果:
value : 10
value : 264952704
即使我使用指针并在引用的位置返回地址,情况仍然相同。
我的问题是,在这些打印之间我没有运行任何进程,但是值正在改变。那么这意味着我的系统中的其他进程正在使用localnum
的内存区域吗?
<<
是一个操作符,它意味着一些库函数的执行?在你的MCVE中,你确实使用了一些#include
,对吧?即使你没有提供MCVE...所以不需要“不同的进程”。 - Yunnosch