C++引用错误

C++ reference bug

本文关键字:错误 引用 C++      更新时间:2023-10-16

我试图理解c++引用是如何工作的,并试图编写下一个代码:

#include <iostream>
int& func();
int main()
{
std::cout <<func()<< std::endl;
system("pause");
return 0;
}
int& func()
{
int x = 23;
return x;
}

据我所知,函数中初始化的int x将在func结束后被擦除,然后函数返回的值将指向不存在的东西。但当我打印它时,我在控制台上得到了23。这怎么可能?

值被写入func()内部的内存中,但返回后您在"不存在"中出错。为什么它不存在,还有什么东西覆盖了那段记忆吗?你不能确定。这是未定义的行为。

您只是从func()返回一个内存地址,该地址在返回后可用于其他变量。但是,如果(现在可用的(内存地址没有被覆盖,它将保持值23.直到天结束;(

以下是@George对未定义行为的引用:https://en.cppreference.com/w/cpp/language/ub

此外,您的代码可能有一些错误。。。不管怎样,看看这个,它会解决你的烦恼可以使用局部变量';内存是否在其范围之外被访问?