Einzelnen Beitrag anzeigen

Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: PChar wird einfach verändert!

  Alt 5. Apr 2006, 14:20
Ich gehe mal davon aus das muffel und Passwort vom Typ PChar sind. Damit sind sie Zeiger.
Delphi-Quellcode:
    muffel :=PChar(ini.ReadString('MYSQL','Name','Fehler'));
    Passwort :=PChar(ini.ReadString('MYSQL','Passwort','Fehler'));
ini.readString liefert einen string. Dieser ist von Delphi dynamisch in einer anonymen Hilfsvariablen alloziiert. PChar() liefert den Zeiger auf das erste Zeichen diese strings. Nun wird aber der gelieferte string keiner Variable zugewiesen. Delphi geht also davon aus das die anonyme Hilfsvariable nun unbenutzt ist und gibt den Speicher wieder frei. Damit zeigt muffel nun auf freigegebenen Speicher.
Der naechste Aufruf von ini.ReadString alloziiert also wieder eine anonyme Hilfsvariable die mit guter Wahrscheinlichkeit den gerade freigegebenen Speicher recycled oder zumindest fuer die Verwaltung des freien Speichers verwendet.
  Mit Zitat antworten Zitat