c++ - 0xDEADBEEF 相当于 64 位开发?

标签 c++ debugging 64-bit defensive-programming

用于 32 位系统的 C++ 开发(无论是 Linux,Mac OS 或 window ,PowerPC或 x86)我已经初始化了指针 否则将是未定义的(例如,他们不能立即 得到一个合适的值)像这样:

int *pInt = reinterpret_cast<int *>(0xDEADBEEF);

(为了节省输入和成为 DRY 右侧通常会 保持不变,例如BAD_PTR。)

如果 pInt 在获得正确值之前被取消引用,那么 它会在大多数系统上立即崩溃(而不是 当某些内存被覆盖或消失时,会在很久以后崩溃 进入一个很长的循环)。

当然,行为取决于底层 硬件(从奇数中获取 4 字节整数 来自用户进程的地址 0xDEADBEEF 可能是完美的 有效),但是对于所有的崩溃都是 100% 可靠的 到目前为止我开发的系统(Mac OS 68xxx,Mac OS PowerPC, Linux Redhat Pentium, Windows GUI Pentium, Windows 控制台奔腾)。例如在 PowerPC 上它是非法的(总线 fault) 从一个奇数地址获取一个 4 字节整数。

这在 64 位系统上有什么好的值(value)?

最佳答案

0xBADC0FFEE0DDF00D

关于c++ - 0xDEADBEEF 相当于 64 位开发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1258051/

相关文章:

python - 如何在 64 位环境中处理 ctypes 中的字符串数组 (char **)?

c++ - 错误 LNK2019 : unresolved external and LNK1120: 1 unresolved externals

c++ - 如何在 C++ 中将 pvr 解压缩为原始格式 8888?

javascript - 为什么我的组件之一不会使用 Hook 隐藏 onclick?

c++ - 如何追踪 "double free or corruption"错误

c++ - 链接器找不到现有库

c++ - 网络客户端模拟器设计

c++ - 无法在特定磁盘上进行 ioctl

javascript - 如何在浏览器的调试器本身中调试动态加载的 JavaScript(使用 jQuery)?

c# - 计算 64 位(长,大)整数中的位数?