运维开发网

Stack – Frame – Objective-C中的堆

运维开发网 https://www.qedev.com 2020-03-05 12:57 出处:网络 作者:运维开发网整理
我在本网站上发现的所有问题仅涉及Stack vs Heap而不是 讨论框架所以这是我的问题.不要区分这三者. 我知道的: 帧: 框架就像黑板,例如函数的变量. 在函数运行时,存储所有实例变量 在该功能的框架内.当一个函数被调用时 框架在堆栈顶部创建. 堆: 可以将堆栈可视化为帧的物理堆栈. 当执行方法(或函数)时,它会分配一个 堆栈中的内存块. 堆: 所有对象指针都存在于堆上. Stack和Fra
我在本网站上发现的所有问题仅涉及Stack vs Heap而不是

讨论框架所以这是我的问题.不要区分这三者.

我知道的:

帧:

框架就像黑板,例如函数的变量.

在函数运行时,存储所有实例变量

在该功能的框架内.当一个函数被调用时

框架在堆栈顶部创建.

堆:

可以将堆栈可视化为帧的物理堆栈.

当执行方法(或函数)时,它会分配一个

堆栈中的内存块.

堆:

所有对象指针都存在于堆上.

Stack和Frame很清楚(我想)但是我对Heap声明是对的吗?

Heap: All object pointers live on the heap.

Stack and Frame is clear (I think) but am I right with my Heap statement?

不完全的.大多数(*)动态分配的对象存在于堆上,指向这些对象的指针存在于其他对象(或变量,它们本质上是相同的东西)中 – 可能位于堆栈或堆上. “对象”和“指向对象的指针”之间的这种区别在Objective-C中很重要(在所有语言中都不是这样),并且说所有“对象指针都存在于堆上”并不正确.

(*)“大多数”因为在堆栈上分配动态对象是可能的,有时非常有用.您无法使用Objective-C对象执行此操作,但可以使用C对象执行此操作(并且C是Objective-C的一部分).不要担心自己,这个脚注更能说明这里描述的模型是一种简化.

0

精彩评论

暂无评论...
验证码 换一张
取 消