首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在可可应用中,0x7FFF..。似乎是堆栈上的一个对象,0x000001.似乎是堆上的一个对象,但是什么是0x618.?

在可可应用中,0x7FFF..。似乎是堆栈上的一个对象,0x000001.似乎是堆上的一个对象,但是什么是0x618.?
EN

Stack Overflow用户
提问于 2017-07-05 22:21:48
回答 1查看 60关注 0票数 0

我一直在Cocoa应用程序0x618....中看到这些地址

据我所知,对象在堆栈或堆上分配。

在应用程序执行时,生成堆栈帧并将其放置在堆栈上,在堆栈范围内创建的任何本地指针都在堆栈(0x7FFF...)上分配。

并且指针所引用的实际底层对象在堆(0x0000010...)上创建。

但实际上,内存中的这个0x618....区域也用作对象的堆吗?因为如果取消引用堆栈中指向NSObject子类的指针,我看到它几乎总是指向0x618...

可可应用程序有两个堆吗?

或者0x618...是应用程序的实际堆,而0x000001只是其他内存的一部分,完全用于其他方面?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-06 03:53:19

堆通常位于堆栈下面和代码之上。因此,不可能确定堆地址的起始位置,但是对于堆地址来说,0x618...并不是不合理的。

不是所有的对象都在堆中,例如,字符串常量被编译到您的代码中,并且您的0x000001...可以很容易地成为一个对象。

还有标记指针的复杂性。有些对象甚至没有分配堆,但是它们的值与一些标记位组合成一个标记指针,这个指针根本不是指针,而是在指针类型的变量中找到的。对于某些值,NSNumber是这样的,例如,@42返回“指针”0x2a37

HTH

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

https://stackoverflow.com/questions/44936910

复制
相关文章

相似问题

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