zoukankan      html  css  js  c++  java
  • 类、接口、记录、动态数组的内存释放问题,当做参数和返回值的时候 释放问题

    类 --- 手工创建与释放

    接口 --- 根据引用计数增加和减少 为0时释放。

    记录 ---- 就是一组基本类型的组合,自动创建和释放。

    动态数组 --- 独特的一套自动释放策略,可以看下图汇编代码,指针出栈时 自动释放。

    当做参数的时候的释放问题,理解了,那么当做返回值的时候是如何释放的呢。

    类、接口、记录、动态数组 当被作为返回值的时候 都是与其自身原来的释放策略一样的特性。

    unit Unit4;
    
    interface
    
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
    
    type
      TForm4 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form4: TForm4;
    
    implementation
    
    {$R *.dfm}
    
    function abc1(): TStringList;
    begin
      Result := TStringList.Create;
      Result.Add('QDAC');
    end;
    
    procedure abc2(var aList: TStringList);
    begin
      aList.Add('QDAC');
    end;
    
    procedure abc3(out aList: TStringList);
    begin
      aList := TStringList.Create;
      aList.Add('QDAC');
    end;
    
    procedure TForm4.Button1Click(Sender: TObject);
    var
      list1, list2, list3: TStringList;
    begin
      list1 := abc1();
    
      list2 := TStringList.Create;
      abc2(list2);
    
      abc3(list3);
    
      Memo1.Lines.Add('list1 ' + list1.Text);
      Memo1.Lines.Add('list2 ' + list2.Text);
      Memo1.Lines.Add('list3 ' + list3.Text);
    
      list1.Free;
      list2.Free;
      list3.Free;
    end;
    
    procedure TForm4.FormCreate(Sender: TObject);
    begin
      ReportMemoryLeaksOnShutdown := True;
    end;
    
    end.
  • 相关阅读:
    UVA 1025 A Spy in the Metro DP水题
    ZOJ 3814 Sawtooth Puzzle BFS
    ZOJ 3816 Generalized Palindromic Number
    UVA 10859 Placing Lampposts 树形DP
    UVA 11825 Hackers' Crackdown 状压DP
    POJ 2887 Big String 线段树 离线处理
    POJ 1635 Subway tree systems Hash法判断有根树是否同构
    BZOJ 3110 k大数查询 & 树套树
    sdoi 2009 & 状态压缩
    来自于2016.2.24的flag
  • 原文地址:https://www.cnblogs.com/del88/p/6693655.html
Copyright © 2011-2022 走看看