【发布时间】:2010-11-16 09:00:06
【问题描述】:
考虑我的示例代码:
var p512Sector:PByte;
.....
getmem(p512Sector, 262144);
FillChar( p512Sector,262144 ,0);
当我运行程序时,Delphi 给我一个违规访问错误。为什么?
【问题讨论】:
-
您可以简单地使用 AllocMem (docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/…) 来获得一个零初始化的缓冲区。
-
一般来说,
ZeroMemory(Windows“宏”)可能比FillChar(Delphi RTL)更具可读性。请注意,ZeroMemorydo 需要一个指针,而不是取消引用的值。 (比较Move(Delphi RTL)和Windows API“宏”CopyMemory/MoveMemory。前者需要一个变量,后者需要指针。) -
为什么不使用动态字节数组?
标签: delphi