c++ - 同一内存地址处有两个不同的值

标签 c++

代码

#include <iostream>
using namespace std;

int main() {
    const int N = 22;
    int * pN = const_cast<int*>(&N);
    *pN = 33;
    cout << N << '\t' << &N << endl;
    cout << *pN << '\t' << pN << endl;
}

输出

22 0x22ff74

33 0x22ff74

为什么同一个地址有两个不同的值?

最佳答案

Why are there two different datas at the same address?

没有。编译器可以优化任何提及 const 的内容,就好像您已将其编译时值写入其中一样。

请注意,如果您执行了诸如写入为常量保留的内存等令人讨厌的技巧,编译器还可以生成在运行时删除硬盘的代码。

关于c++ - 同一内存地址处有两个不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56530432/

相关文章:

c++ - Bada IDE 是否有代码补全和有意义的错误信息?

c++ - C 字符串在 C++ 的显式构造函数中赋值?

c# - 如何在 C# 中使用 1 Console.Writeline() 编写两个字符串及其两个变量值

c++ - gcc: 错误: 无法识别的命令行选项 ‘-combine’

php - C++程序调用PHP脚本上传内容到数据库

c# - 你能喝一个 boost::optional<> 吗?

c++ - Emacs 隐藏/显示对 C++ 三斜杠 Doxygen 标记的支持?

c# - 将 C++ map 数据传递给 C#

c++ - double C++

c++ - Gtkmm3 TreeView ListStore.Clear 或 TreeSelection.unselectAll 导致错误