iOS系统的内存是什么结构

发布于 2022-08-24 08:52:11 字数 254 浏览 12 评论 0

在Debug iOS应用的时候发现一个有趣的现象,有些对象的内存地址位数非常低,有些对象的内存地址位数非常高。
比如:

NSString *str = [[NSString alloc] init]; // 0x00d892b4
NSArray *arr = [[NSArry alloc] init]; // 0x0742fb30

据我了解,操作系统进行内存分配是有一定顺序的,不可能跳跃的分配,那么为什么iOS程序分配内存的时候,地址跳跃极大呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

少女的英雄梦 2022-08-31 08:52:11

iOS的内存分三段,Text段存运行时代码,Stack段存编译时申请空间的数据,Heap段存运行时申请空间的数据。
NSString的init方法就是把@""付给这个指针,同:initWithString:@"",同 = @""。iOS会给@""(或@"abcd")在编译时就分配内存,放在Stack段。Stack段是从低位开始向高位使用,不受引用计数控制。
NSArray的init方法则是在运行时才分配空间的,放在Heap段。Heap段是从高位开始的,受引用计数控制。

与之呼应 2022-08-31 08:52:11

你所获得的并非物理的内存地址。
技术细节可以参考:http://developer.apple.com/library/ma...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文