博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
System.GetMem、System.FreeMem - 申请和释放内存
阅读量:5756 次
发布时间:2019-06-18

本文共 1112 字,大约阅读时间需要 3 分钟。

  hot3.png

如果只为单个指针分配内存, 和 是一样的; 与之不同的是: GetMem 可以申请连续的多个内存块.
举例:

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs;type  TForm1 = class(TForm)    procedure FormCreate(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}Type  TMyRec = record     {定义结构}    name: string[8];    age : Word;  end;  PMyRec = ^TMyRec;   {定义结构指针}var  pr: PMyRec;procedure TForm1.FormCreate(Sender: TObject);begin  {同时分配 3 个结构的内存; 此时的三个结构在内存中是连续的}  GetMem(pr, SizeOf(TMyRec) * 3);  {此时 pr 指向第一个结构, 赋值}  pr.name := '张三';  pr.age := 11;  {让 pr 指向第二个结构, 赋值}  Inc(pr);  pr.name := '李四';  pr.age := 22;  {让 pr 指向第三个结构, 赋值}  Inc(pr);  pr.name := '王五';  pr.age := 33;  {先回到第一个结构, 然后依次读取}  Dec(pr, 2);  ShowMessage(Format('%s %d 岁', [pr.name, pr.age])); {张三 11 岁}  Inc(pr);  ShowMessage(Format('%s %d 岁', [pr.name, pr.age])); {李四 22 岁}  Inc(pr);  ShowMessage(Format('%s %d 岁', [pr.name, pr.age])); {王五 33 岁}  {从第一个结构, 清除 3 个结构大小的内存, 这样就删除了上面三个结构}  Dec(pr, 2);  FreeMem(pr, SizeOf(pr^) * 3); {SizeOf(TMyRec)  和 SizeOf(pr^) 是一样的}end;end.

转载于:https://my.oschina.net/hermer/blog/320093

你可能感兴趣的文章
Hyper-V介绍
查看>>
Linux下Fork与Exec使用
查看>>
cocos2d-x游戏是怎么跑起来的
查看>>
PLSQL_Oracle PLSQL内置函数大全(概念)
查看>>
iOS开发UI篇—CAlayer(创建图层)
查看>>
数据库热备之SQLServer的数据库镜像实施笔记
查看>>
在SQL Server中对视图进行增删改
查看>>
老鸟的Python新手教程
查看>>
求不定积分
查看>>
[原]Unity3D深入浅出 - 认识开发环境中的Project面板
查看>>
Android 轻松实现语音识别
查看>>
[2014AAA]On the weak solution to a fractional nonlinear Schrödinger equation
查看>>
GridView编辑删除操作
查看>>
layoutSubviews总结
查看>>
安卓第六夜 凡高的自画像
查看>>
彻底理解浮动float CSS浮动详解 清除浮动的方法
查看>>
在 ASP.NET MVC 中使用异步控制器
查看>>
Eclipse插件开发
查看>>
VMdomainXml
查看>>
JS魔法堂:阻止元素被选中
查看>>