C++ 返回局部变量的引用与地址
Last updated on September 19, 2021 pm
C++ 返回局部变量的引用与地址
听说 2020 - 1024 = 996?
1 |
|
在 Visual Studio 中用 debug 编译,从外部试图访问局部变量时出现了 -858993460。让我们看一下:-858993460 的二进制表示在补码方案下其实是 -858993460 -(-2^31) + 2^31 = 3435973836 的二进制表示,转成 16 进制正是大名鼎鼎的 0xCCCCCCCC 。
以上代码在 TDM-GCC 4.9.2 上编译,发现正常读取。不论哪种编译器,使用 void 指针间接访问均可行,这反映系统并不会在局部变量生命周期结束后便急着将它写入新的值,短时间内内存上的值还是不变的。
不过在 Ubuntu 下用 gcc 9.3.0 编译就不一样了……经 Issues 指点,这可能是 gcc 的一个特性。
总之,这种操作应当避免……
C++ 返回局部变量的引用与地址
https://zhaozihanzzh.github.io/2020/10/24/local-variable-pr/