delphi 精要-读书笔记(内存分配释放)

news/2024/5/19 1:27:03 标签: delphi, 读书, integer

1.内存分为三个区域:全局变量区,栈区,堆区

全局变量区:专门存放全局变量

栈区:分配在栈上的变量可被栈管理器自动释放

堆区:堆上的变量内存必须人工去释放

2.指针类变量

指针类的变量在声明为全局变量时被初始化为空值,在声明为局部变量时则初始化为一个随机数,对于指针类型一般

要使用一些代码来完成内存分配

3.动态分配内存的函数和过程

procedure GetMem(Var P: Pointer; Size: Integer); 

分配大小为Size字节的内存块,并让P指向它

procedure AllocMem(Size: Cardinal):Pointer;

分配大小为Size字节的内存块并始初化为零,并返回地址指针

procedure ReallocMem(Var P: Pointer; Size: Integer);

在途中更改先前用GetMem或者AllocMem分配的内存大小

procedure FreeMem(Var P: Pointer);

使用GetMem和AllocMem分配的内存都应该用FreeMem释放

Procedure New(Var P: Pointer);

用New分配的内存大小由参数P的数据类型确定,因此,不要使用它给无类型指针变量分配内存.

Procedure Dispose(Var P: Pointer);

释放该内存块使用dispose


http://www.niftyadmin.cn/n/1416128.html

相关文章

卷积神经网络--猫狗系列【VGG16】

数据集:【文末】 ​ 数据集预处理 定义读取数据辅助类(继承torch.utils.data.Dataset) import osimport PILimport torchimport torchvisionimport matplotlib.pyplot as pltimport torch.utils.dataimport PIL.Image # 数据集路径train_p…

Ball Coloring

6552: Ball Coloring 时间限制: 1 Sec 内存限制: 128 MB提交: 13 解决: 7[提交][状态][讨论版][命题人:admin]题目描述 There are N bags, each containing two white balls. The i-th box contains two balls with integers xi and yi written on them, respectively.For ea…

java链入到mysql_java链接到mysql

当然,首先要安装有JDK(一般是JDK1.5.X)。然后安装MySQL,这些都比较简单,具体过程就不说了。配置好这两个环境后,下载JDBC驱动mysql-connector-java-5.0.5.zip(这个是最新版的)。然后将其解压缩到任一目录。我是解压到D盘&#xff…

从网上得知的一些delphi经典书籍

delphi 精要-比较适合初学者(第一次觉得买对了的书) delphi开发人员指南(一套系统的教程,老外的书,可惜很难买到,只有电子版) delphi深度历险(看了叫人容易产生兴趣,讲的与众不同,可惜很难买到,只有电子版) delphi深度探索(适合delphi高手,有很多一般…

struct{0}二

一直以为 int a[256]{0};是把a的所有元素初始化为0,int a[256]{1};是把a所有的元素初始化为1. 调试的时查看内存发现不是那么一回事,翻了一下《The C Programming Language》总算有定论。PDF的竟然不然复制,就把它这章翻译了,如下…

Go Python 5: Train a SVM

转载于:https://www.cnblogs.com/wordchao/p/9182501.html

mysql分割符号_mysql之以符号分割字符串

新建函数名:splitString( )BEGINdeclare result varchar(255) default ;set result reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));return result;END参数:f_string varchar(1000),f_delimiter var…

对inherited的一点理解

inherited不光是用在override之后的 它的完整语法是inherited XXX(ParamList); 上面的语法表示调用父类的方法XXX, ParamList是参数列表 如果直接使用inherited,没有指定方法名和参数,那么就会调用父类的同名方法