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

椰子天涯 2012-05-15 08:16:02

VC++中这样写

UCHAR * myBuffer;


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

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

delete []myBuffer;


请问delphi中该怎样写?
...全文
742 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
椰子天涯 2012-05-15
  • 打赏
  • 举报
回复
祝大家有个好心情 ^_^
椰子天涯 2012-05-15
  • 打赏
  • 举报
回复
谢谢大家 可以的 明白了
kaikai_kk 2012-05-15
  • 打赏
  • 举报
回复
分配内存有多种方法,对应有释放方法也不同,比如
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;

bdmh 2012-05-15
  • 打赏
  • 举报
回复

var
myBuffer : PByte;
begin
GetMem(myBuffer,2048 * 1536 * 3);
FillChar(myBuffer^,2048 * 1536 * 3,0);
FreeMem(myBuffer,2048 * 1536 * 3);
end;
纯冰糖 2012-05-15
  • 打赏
  • 举报
回复
memset对应D的ZeroMemory
shuihan20e 2012-05-15
  • 打赏
  • 举报
回复
zeromemory
纯冰糖 2012-05-15
  • 打赏
  • 举报
回复
GetMem,FreeMem....
纯冰糖 2012-05-15
  • 打赏
  • 举报
回复
GetMem,FreeMem
椰子天涯 2012-05-15
  • 打赏
  • 举报
回复
我是这样写的


var myBuffer : PByte;


if myBuffer <> nil then
Dispose(myBuffer );
myBuffer := nil;

New(myBuffer );


这样写为什么不正确 请问还需要补充什么? 谢谢
椰子天涯 2012-05-15
  • 打赏
  • 举报
回复
我是这样写的


var myBuffer : PByte;


if myBuffer <> nil then
Dispose(myBuffer );
myBuffer := nil;

New(myBuffer );


这样写为什么不正确 请问还需要补充什么? 谢谢

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧