当我打电话给FillChar时,为什么会出现访问冲突?

时间:2010-11-16 09:00:06

标签: delphi

考虑我的示例代码:

var p512Sector:PByte;
.....
getmem(p512Sector, 262144);
FillChar( p512Sector,262144 ,0);

当我运行程序时,Delphi会给我一个违规访问错误。为什么呢?

2 个答案:

答案 0 :(得分:11)

使用FillChar(p512Sector^, 262144, 0)(注意取消引用^)。否则你将覆盖指针和内存中的东西,而不是分配的缓冲区。

答案 1 :(得分:5)

FillChar需要一个无类型的变量。你应该取消引用指针:

FillChar(p512Sector^, ...);