读书人

delphi new怎么申请、分配、以及释放空

发布时间: 2012-05-15 14:35:29 作者: rapoo

delphi new如何申请、分配、以及释放空间 ?

VC++中这样写

UCHAR * myBuffer;


myBuffer = new UCHAR[2048 * 1536 * 3];

memset(myBuffer, 0, 2048 * 1536 * 3);

delete []myBuffer;


请问delphi中该怎样写?


[解决办法]
GetMem,FreeMem
[解决办法]
GetMem,FreeMem....
[解决办法]
zeromemory
[解决办法]
memset对应D的ZeroMemory
[解决办法]

Delphi(Pascal) code
var   myBuffer : PByte;begin  GetMem(myBuffer,2048 * 1536 * 3);  FillChar(myBuffer^,2048 * 1536 * 3,0);  FreeMem(myBuffer,2048 * 1536 * 3);end;
[解决办法]
分配内存有多种方法,对应有释放方法也不同,比如
GetMem FreeMem
AllocMem ReallocMem
GetMemory ReallocMemory FreeMemory
New Dispose
StrNew StrAlloc StrDispose
...

建议用StrAlloc
他实际也是调用了GetMem, 但StrAlloc会在指针前面添加4个管理字节(作用是记录长度),相应的用StrDispose释放
内存操作,最好用try finally end处理,保证分配的内存得到释放

var myBuffer : PByte;

try
New(myBuffer);
...
finally
Dispose(myBuffer);
end;

读书人网 >.NET

热点推荐