返回一个Ref到一个局部变量
Returning a Ref to a local variable
我知道返回对函数的局部变量的引用是未定义的,例如:
int& returnIntRef_One()
{
int value = 5;
return value;
}
但是,在这个函数中:
int& returnIntRef_Two()
{
int i = 5;
int &value =i;
return value;
}
返回值似乎很好。
谁能给我解释一下有什么不同吗?谢谢
以任何方式访问悬空引用都是未定义的行为。因此第二个例子也是未定义行为。所以任何事情都有可能发生。它有时可能工作,有时可能崩溃,有时可能不崩溃,但可能会给出垃圾值等。
简而言之,你不能认为它总是有效的,因此你不能使用它。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 静态常量与常量局部变量,哪一个性能更好
- 调用一个小函数两次(例如在if条件和主体中)比将结果存储在局部变量中更可取
- 如何在C++的另一个函数中使用局部变量
- 编译器是否可以从全局变量中读取两次,而不是存储一个局部变量
- 怎么可能有两个同名的变量——一个是全局变量,另一个是局部变量
- 如何制作一个集合,其中元素使用局部变量进行排序
- 如何从另一个类调用函数,其中该函数使用局部变量
- 在C++中返回一个局部变量
- 返回一个带有随机选项和局部变量的 char 函数
- 一个函数中的局部变量的变化会导致一个不相关的函数C++
- C++传递一个局部变量
- 如何可能混淆一个局部变量
- 我如何使一个函数指针引用一个局部变量
- 返回一个Ref到一个局部变量
- 局部变量在超出作用域时删除另一个变量的内存
- 我可以创建一个局部变量的boost::shared_ptr吗
- 如何在C++的另一个范围内使用局部变量
- 在c++中声明一个局部变量const的好处,如果它的值在编译时不知道
- 构造函数中的局部变量没有被遵循.这是gdb中的一个错误吗