Der Punkt ist, damit es mit Zeigern arbeiten. Außerdem habe ich similar problem mit C++ gefunden. Es funktioniert nicht mit Pascal, nun, ich prob. etwas verpasst.Fehler beim Löschen von dynamischen 3D-Array in Pascal
1) I-Typen und variable für meine Zeiger machen:
type
PReal = ^double;
PPReal = ^PReal;
var
data : ^PPReal;
2) Dies ist, wie I-Speicher (x, y, z sind Dimensionen) zuzuteilen:
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) und das ist, wie ich versuche, es zu entsorgen():
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);
Allerdings bin ich 216 (Speicherzugriff) oder 204 (ungültiger Zeiger Betrieb) Laufzeitfehler zu bekommen. Wie this. Voll code (FreePascal IDE)
Jede Hilfe geschätzt.
Warum Pascal nicht für das verwenden, wofür es bekannt ist, geben Sie Sicherheit ein. Unter [Mehrdimensionales dynamisches Array] (http://wiki.freepascal.org/Example:_Multidimensional_dynamic_array) finden Sie Beispiele für die Arbeit mit dynamischen Arrays in Pascal. –
Führt Pascal C-Style-Zeiger + Ganzzahladdition? – user3344003