【发布时间】:2017-03-29 20:33:14
【问题描述】:
关键是让它与指针一起工作。另外,我用 C++ 找到了similar problem。它不适用于帕斯卡,好吧,我很可能。错过了什么。
1) 我为指针创建类型和变量:
type
PReal = ^double;
PPReal = ^PReal;
var
data : ^PPReal;
2) 这就是我分配内存的方式(x,y,z 是维度):
GetMem( data, sizeof(PPReal)*x );
for i:=0 to x-1 do begin
GetMem( (data+i)^, sizeof(PReal)*y );
for j:=0 to y-1 do begin
GetMem( ((data+i)^+j)^, sizeof(real)*z );
end;
end;
3) 这就是我尝试 Dispose() 的方式:
for i:=0 to x-1 do begin
for j:=0 to y-1 do begin
Dispose( ((data+i)^+j) );
end;
Dispose( (data+i) );
end;
Dispose( data );
但是,我收到 216(内存访问)或 204(无效指针操作)运行时错误。喜欢this。完整的code (FreePascal IDE)
任何帮助表示赞赏。
【问题讨论】:
-
为什么不使用 pascal 来实现它的知名之处,即类型安全。有关如何在 pascal 中使用动态数组的示例,请参阅 Multidimensional dynamic array。
-
pascal做C风格的指针+整数加法吗?
标签: arrays pointers memory-management multidimensional-array pascal