我正在使用Xcode和Clang作为编译器,当我在地址为0xCDCDCDCD
的指针上调用函数时,我正在获得EXC_BAD_ACCESS。我也看到一些变量设置为0xABABABAB
左右。我环顾四周,注意到这些值在Visual Studio中用作幻数,以帮助查看问题所在。但是我找不到Xcode使用的幻数列表(或Clang,不确定它是否是编译器或IDE的机制)。有谁知道我在哪里找到一个?
答案 0 :(得分:2)
我不知道任何全面的列表,这似乎是您正在搜索的内容,但是当您使用Debug构建分配内存块时,0xCDCDCDCD
通常由C运行时使用。
答案 1 :(得分:1)
除了列出调试中使用的各种幻数的Wikipedia "magic debug value" list之外,我不知道任何此类列表。
正如迈克上面所说,在调试版本中,指针很可能被初始化为无效的内存地址,以便更容易捕获与指针相关的潜在错误。
这是一个编译器或运行时功能,但它们被初始化的确切值应该无关紧要,因为该功能可以使指针调试更简单。 EXC_BAD_ADDRESS
只是尝试对未分配的内存执行操作的结果,实际上是预期的行为。
这些数字在Visual Studio中被用作幻数,可能正是因为它们可以在运行已编译的程序时用于定位未初始化的指针。