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

mic*_*eal 3 delphi

考虑我的示例代码:

var p512Sector:PByte;
.....
getmem(p512Sector, 262144);
FillChar( p512Sector,262144 ,0);
Run Code Online (Sandbox Code Playgroud)

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

Uli*_*rdt 11

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


Ond*_*lle 5

FillChar期望一个无类型的变量.你应该取消引用指针:

FillChar(p512Sector^, ...);
Run Code Online (Sandbox Code Playgroud)