Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Wann Speicher reservieren?

  Alt 9. Okt 2008, 10:19
Wenn du mit der Referenz auf ein Record arbeitest, also der Art
Delphi-Quellcode:
var
  x: TMyRecord;
, dann wird für diesen bereits per Compilermagic Speicher reserviert.
Nimmst du statt dessen einen Pointertypen auf einen Record der Art
Delphi-Quellcode:
var
  x: ^TMyRecord;
, so musst du selbst Hand anlegen. Im Grunde wie sonst auch.

Bei Records/Structs die von API Funktionen als reine out-Variablen zurückgeliefert werden, übernimmt diese Funktion meistens auch die Reservierung. Beispielsweise wird in manchen Messages ein Pointer auf einen Struct geliefert, und dort hättest du ja nichtmals die Chance einen Speicherbereich vorher dafür festzulegen. Da die WinAPI aber nicht immer zwangsweise in sich konsistent ist, kannst du eigentlich nur durch Nachschauen im msdn sicher sein wie diese oder jene Funktion es denn gerne hätte. Daher sind Faustregeln hier finde ich eher hinderlich
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat