Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.776 Beiträge
Delphi 12 Athens
|
AW: Array korrekt freigeben
Gestern, 22:02
GetMem und GetMemory reservieren Speicher, aber dieser ist nicht zwangsläufig mit 0 initialisiert.
Du solltest danach also besser auch noch ein Initialize drüber jagen.
So wie das Finalize vor dem FreeMem.
Beim AllocMem ist es dagegen garantiert immer mit 0 initialisiert, also ein FillChar/ZeroMemory ist integriert, und somit "quasi" das Initialize bereits mit enthalten. (wenn auch nicht wirklich, aber es wirkt so, so lange es kein ManagedRecord-Initialiize gibt)
Beim New und Dispose sind dagegen Initialize und Finalize bereits integriert.
Im Prinzip ist AllocMem wie ein Objekt-Feld (oder fast wie globale Variable),
GetMem/GetMemory wie eine lokale non-managed Variable (der Zufall schlägt böse zu)
und New+Dispose wie eine lokale managed Variable, bzw. wie Create und Destroy zum Objekt-Feld.
Ein Therapeut entspricht 1024 Gigapeut.
Geändert von himitsu (Heute um 09:42 Uhr)
|