Object Pascal 内存管理:ARC 与非 ARC 编译器下的对象操作
1. ARC 与非 ARC 编译器下对象创建和销毁的总结
Object Pascal 在不同编译器上支持两种不同的内存模型,这使得情况变得复杂一些。为了帮助理解这两种模型的差异,下面通过表格展示常见操作在非 ARC 和 ARC 编译器下的效果和区别。
| 操作 | 传统风格 | ARC 风格 |
|---|---|---|
| 调用 Create 构造函数 | 分配内存并执行初始化代码。如果构造函数有不同的名称,效果相同,因为这并不影响实际操作。 | 效果相同。注意,当新创建的对象被赋值给一个变量(临时或已声明的)时,初始引用计数会增加,而不是在构造函数本身中增加。 |
| 赋值给另一个变量或作为(标准)值参数传递 | 两个变量将简单地引用内存中的同一个对象。需要你自己避免内存泄漏和悬空引用。 | 同样是两个变量引用同一个对象,但对象的引用计数也会增加。只要变量在作用域内,ARC 会自动管理内存,使对象保持存活。 |
| 作为 const 或引用参数传递 | 在内存管理方面没有显著差异。 | 引用计数不会增加或减少,如果适用,会使代码更高效。 |
| 调用 Destroy 析 |
超级会员免费看
订阅专栏 解锁全文

6

被折叠的 条评论
为什么被折叠?



