我正在使用带有Clang的Xcode作为编译器,目前在地址为0xCDCDCDCD
的指针上调用函数时遇到EXC_BAD_ACCESS。我还看到一些设置为0xABABABAB
的变量。我环顾四周,注意到这些值在Visual Studio中被用作幻数,以帮助了解问题所在。但是,我找不到Xcode(或Clang,不确定它是编译器或IDE的机制)使用的幻数列表。有谁知道我在哪里可以找到一个?
有任何全面的列表,这似乎是您正在寻找的,但是当您使用调试版本分配内存块时,C 运行时通常使用它0xCDCDCDCD
。
维基百科的"魔术调试值"列表之外,我不知道有任何这样的列表,该列表列出了调试中使用的各种幻数。
正如 Mike 上面所说,指针很可能在调试版本中初始化为无效的内存地址,以便更容易捕获潜在的指针相关错误。
它是一个编译器或运行时功能,但它们初始化的确切值应该无关紧要,因为该功能可以使指针调试更简单。EXC_BAD_ADDRESS
只是尝试对未分配的内存执行操作的结果,实际上是预期行为。
这些数字在Visual Studio中被用作幻数,可能正是因为它们可以用来在运行编译的程序时定位未初始化的指针。