首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS上,0x000000000000000026、0x000000000000001c、0x000000000000005a是否是标记指针的示例?

在iOS上,0x000000000000000026、0x000000000000001c、0x000000000000005a是否是标记指针的示例?
EN

Stack Overflow用户
提问于 2018-09-11 05:05:47
回答 1查看 157关注 0票数 1

在iOS 11上,当我有意创建的对象被标记为指针时,它们从0xB开始,而不是在崩溃报告中显示为无效地址的0x000000000000001c、0x0000000000005a值。我认为这些可能是带标记的指针,但它们的格式不像我在调试器中看到的带标记的指针那样。

0x00000000000000000010,0x0000000000000020,0x0000000000000030怎么样?它们都有一个尾随的0,但它们看起来确实小得让人怀疑是真正的指针。

EN

回答 1

Stack Overflow用户

发布于 2018-09-12 03:30:07

标记指针的实现细节因版本和架构的不同而不同。话虽如此,这些看起来真的不像带标签的指针。

最有可能的情况是,某段代码正在取消对意外为NULL或nil的结构或对象的引用。

运行以下代码:

代码语言:javascript
复制
struct bob {
    void *a;
    void *b;
    void *c;
    char d[42];
};

int main(int argc, const char * argv[]) {
    struct bob *fred = NULL;

    fred->d[2] = 'q';
    return 0;
}

你会看到这个崩溃(在x86_64上):Thread 1: EXC_BAD_ACCESS (code=1, address=0x1a)

也就是说,它试图通过0x0取消引用。因此,更有可能的情况是,您的结构/对象引用为空,并且您的代码试图取消对元素或实例变量的引用,该元素或实例变量从开头开始被您列出的十六进制#所偏移。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52265470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档