Delphi 堆内存分配和释放方法

在Delphi中,有几种常见的方法来申请堆内存(动态分配内存),每种方法都有对应的释放方法。以下是一些常用的堆内存分配和释放方法:

  1. GetMem / FreeMem

    • GetMem: 用于分配指定字节数的内存块。
    • FreeMem: 用于释放由 GetMem 分配的内存。

    示例:

    var
      MyPtr: Pointer;
    begin
      GetMem(MyPtr, 100); // 分配100字节的内存
      // 使用内存...
      
      FreeMem(MyPtr); // 释放内存
    end;
    
  2. AllocMem / FreeMem

    • AllocMem: 用于分配指定字节数的内存块,并将其初始化为零。
    • FreeMem: 用于释放由 AllocMem 分配的内存。

    示例:

    var
      MyPtr: Pointer;
    begin
      MyPtr := AllocMem(100); // 分配并初始化100字节的内存
      // 使用内存...
      
      FreeMem(MyPtr); // 释放内存
    end;
    
  3. New / Dispose

    • New: 用于分配指定类型的内存块,适用于动态分配记录、对象等。
    • Dispose: 用于释放由 New 分配的内存。

    示例:

    type
      MyRecord = record
        // 定义记录的字段
      end;
    
    var
      MyRec: ^MyRecord;
    begin
      New(MyRec); // 分配记录类型的内存
      // 使用内存...
      
      Dispose(MyRec); // 释放内存
    end;
    
  4. StrNew / StrDispose

    • StrNew: 用于分配内存以存储以 PWideChar 格式表示的字符串。
    • StrDispose: 用于释放由 StrNew 分配的内存。

    示例:

    var
      MyWideStrPtr: PWideChar;
    begin
      MyWideStrPtr := StrNew('Hello, World!'); // 分配内存
      // 使用内存...
      
      StrDispose(MyWideStrPtr); // 释放内存
    end;
    

每种方法都有不同的用途和适用场景。选择适当的方法取决于你的需求和正在处理的数据类型。无论使用哪种方法,都要确保在不再需要内存时进行释放,以避免内存泄漏。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值