gpt4 book ai didi

objective-c - "live in the heap"是什么意思?

转载 作者:太空狗 更新时间:2023-10-30 03:40:25 25 4
gpt4 key购买 nike

我正在学习 Objectiv C,我经常听到“活在堆中”这个词,根据我的理解,它是指针存在的某种未知区域,但我试图真正理解这个确切的术语。 ..就像“我们应该让我们的属性(property) strong 这样它就不会存在于堆中。他说因为属性(property)是私有(private)的。我知道这是一个很大的区别很明显我们想要以确保我们想要计算对该对象的引用,以便自动释放不会清除它(我们想从我目前所知道的“保留”它),但我想确保我理解这个术语,因为它被很好地使用经常。

欣赏

最佳答案

C(以及 Objective C)程序使用三个主要内存区域来存储数据:

  • 静态区
  • 自动区域(也称为“堆栈”),以及
  • 动态区域(也称为“堆”)。

当您通过向类发送 newalloc 消息来分配对象时,生成的对象将分配到动态存储区域中,因此该对象被称为存在于堆。所有的 Objective-C 对象都是这样的(尽管引用这些对象的指针可能位于三个内存数据区域中的任何一个)。相比之下,原始局部变量和数组“存在于”堆栈中,而全局原始变量和数组存在于静态数据存储中。

只有堆对象被引用计数,尽管您可以使用 malloc/calloc/realloc 从堆中分配内存,在这种情况下分配不会被引用计数:您的代码将负责决定何时释放分配的动态内存。

关于objective-c - "live in the heap"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15306834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com