(1)StrAlloc StrDispose
给字符指针(PChar、PWideChar、PAnsiChar)分配内存, 最佳选择是: StrAlloc.(注: 也可以用array[0..Max_Path] of Char)
StrAlloc 分配的内存, 用StrDispose 释放, 用 StrBufSize 获取大小.
(2)New Dispose
New 是给已知大小的指针分配内存 释放: Dispose;
(3)GetMem FreeMem
GetMem 主要是给无类型指针分配内存 释放: FreeMem;
(4)AllocMem
AllocMem 分配内存后会同时初始化(为空) 释放: FreeMem.
(5)ReallocMem
ReallocMem是在已分配的内存的基础上重新分配内存.
(6)MoveMemory、CopyMemory、 Move
MoveMemory、CopyMemory 的功能类似, 都是复制内存, 都是调用 Move 过程;
MoveMemory、CopyMemory 操作指针; Move 操作实体.
(7)跨进程的内存分配
Delphi 为我们提供了三个方便的函数:
GlobalAllocPtr {简化自 API 的 GlobalAlloc}
GlobalReAllocPtr {简化自 API 的 GlobalReAlloc}
GlobalFreePtr {简化自 API 的 GlobalFree}
读写本程序以外的数据时可以使用它们, 很方便, 譬如:
p := GlobalAllocPtr(0, Len); {分配}
p := GlobalReAllocPtr(p, Len, 0); {重分配}
GlobalFreePtr(p); {释放}
注意 GlobalAllocPtr 的第一个参数和 GlobalReAllocPtr 的最后一个参数, 上面给的都是 0;
这两个参数的意义是一样的, 规范一点应该写成 GMEM_FIXED (表示分配固定内存), 常用的参数还有:
GMEM_MOVEABLE {分配可移动内存}
GMEM_ZEROINIT {同时清空内存}
GHND {分配可移动内存同时清空}
GPTR {分配固定内存同时清空}