(delphi11最新学习资料) Object Pascal 学习笔记---第7章第2节(释放对象 )

7.2.1 释放对象

​ 在使用对象引用模型的语言中,您需要一种方法在使用对象之前创建该对象,同时还需要一种方法在不再需要该对象时释放其占用的内存。如果不对其进行清理,就会导致不再需要的对象占满内存,造成内存泄漏问题。为了解决这个问题,C# 和 Java 等基于虚拟执行环境(或虚拟机)的语言都采用了垃圾回收机制。虽然这让开发人员变得更轻松,但这种方法却受到一些复杂的性能问题的制约,而这些问题在解释 Object Pascal 时其实并不重要。因此,尽管这些问题很有趣,但我不想在此深入探讨。

​ 在 Object Pascal 中,一般通过调用对象特殊的 Free 方法(同样是 TObject 的方法,在每个类中都可用)来释放对象的内存。在调用对象的析构函数(可能有特殊的清理代码)后,Free 会将对象从内存中删除。因此,您可以将上面的代码片段补充为:

var
  ADay: TDate;
begin
  // 创建
  ADay := TDate.Create;
  // 使用(略)
  // 释放内存
  ADay.Free;
end;

​ 虽然这是标准的做法,但组件库还增加了像对象所有权这样的概念,大大减少了手动内存管理的影响,使这一问题的处理相对简单。使这个问题的处理相对简单。

注解: 稍后我们将看到,当使用接口引用对象时,编译器采用了一种自动引用计数(ARC)内存管理形式。几年来,Delphi 移动编译器中的常规类类型变量也采用了这种方式。从 10.4 版(也称为 Sydney 版)开始,内存管理模型得到了统一,所有目标平台都采用了经典的桌面 Delphi 内存管理。

​ 需要了解的内存管理知识还有很多;但鉴于这是一个相当重要的主题,而且并不简单,我决定在这里只提供简短的介绍,并用一整章(即第 13 章)专门讨论这一主题。在这一章中,我将向你详细介绍你可以使用的不同技巧。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-17 07:48:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-17 07:48:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-17 07:48:04       82 阅读
  4. Python语言-面向对象

    2024-03-17 07:48:04       91 阅读

热门阅读

  1. 图像描述(image caption)模型简单demo(源码理解原理)

    2024-03-17 07:48:04       40 阅读
  2. 第五章 Collections

    2024-03-17 07:48:04       38 阅读
  3. vue3之带参数的动态路由

    2024-03-17 07:48:04       45 阅读
  4. Flutter中GetX的用法(路由管理)

    2024-03-17 07:48:04       37 阅读
  5. Flutter 的 switch 语句补遗

    2024-03-17 07:48:04       41 阅读
  6. ctf-web23

    ctf-web23

    2024-03-17 07:48:04      43 阅读
  7. SDN网络简单认识(2)——南向接口

    2024-03-17 07:48:04       37 阅读
  8. LeetCode 222.完全二叉树的节点个数

    2024-03-17 07:48:04       45 阅读
  9. MATLAB中的数据类型,例如double,char,logical等。

    2024-03-17 07:48:04       46 阅读
  10. Android什么情况下会出现内存泄漏以及怎么解决?

    2024-03-17 07:48:04       46 阅读