Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#11

AW: GetMem / FreeMem - New / Dispose

  Alt 8. Jun 2012, 13:05
Jetzt würde mich aber wirklich mal interessieren, was du mit unerklärlichen Fehlern meinst wenn man GetMem und FreeMem benutzt?
Nimm z.B. folgende Definition:
Delphi-Quellcode:
type
  MyRec = record
            f1 : Byte;
            f2 : Word;
            f3 : String[80]
 end;
Das sind 84 Byte Du arbeitest also mit Getmem(p,84);
Das Dumme ist nur, das ein mögliches Alignment nicht beachtet wurde. Und immer wenn der String 80..75 Zeichen lang wird, dann trittst Du irgend einer anderen Variablen auf die Füße.

Oder Du hast ein altes 16Bit-Programm und es wird in einer 32-Bit Umgebung neu erstellt. Dann ist ein Integer nicht mehr 16 sondern 32 Bit groß. Und zur Ermittlung des Speicherplatzes wird nicht Sizeof verwendet, sondern fest kodierte Werte. Das kann u.U. recht eklig werden.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 ( 8. Jun 2012 um 13:06 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat