Thema: Delphi FreeMem und Pointer

Einzelnen Beitrag anzeigen

Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#4

Re: FreeMem und Pointer

  Alt 8. Jun 2005, 13:01
hat jetzt nicht direkt etwas mit dem Problem zu tun, aaaaber.....

weshalb verwendest Du nicht diese meines Erachtens bequemere Variante für den Zugriff ?
Delphi-Quellcode:
Type
  PDoubles = ^TDoubles;
  TDoubles = Array[0..0] Of Double;

var
  TestVector: PDouble;
begin
  GetMem(TestVector, SizeOf(PDouble) * 4000);

  PDoubles(TestVector)^[10]:=0.1;
  assert(PDoubles(TestVector)^[10] = 0.1);

  FreeMem(TestVector, SizeOf(PDouble) * 4000);
end;
oder aber TestVector direkt als PDoubles deklarierer - hat nichts mit Delphi's Dyn-Array zu tun

sofern Delphi's Double generell Binary-Kompatibel zu C ist, funktioniert dies einwandfrei

Delphi-Quellcode:
procedure TForm1.TestClick(Sender: TObject);
var
  TestVector: PDouble;
begin
  GetMem(TestVector, 20);

  Self.SetElement(TestVector, 10, 0.1);
  ShowMessage(FloatToStr(Self.GetElement(TestVector, 10)));
  ShowMessage(FloatToStr(Self.GetElement(TestVector, 10)));
  assert(Self.GetElement(TestVector, 10) = 0.1);

  FreeMem(TestVector, 20);
end;
ich weiss jetzt nicht im Detail, wie gross ein Double im Speicher ist, aber 20 Bytes reichen für 11 Doubles sicherlich nicht...... (GetMem(TestVector, 20 * SizeOf(Double));
  Mit Zitat antworten Zitat