Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.329 Beiträge
 
Delphi 12 Athens
 
#4

AW: EAccessViolation sporadisch beim Beenden eines Programms

  Alt 29. Jul 2012, 11:50
Das "Problem" ist ja, daß freigegebener Speicher nicht immer sofort "wirklich" freigegeben, also an Windows zurückgegeben wird.
FastMM reserviert größere Speicherblöcke und gibt diese in kleineren Stückchen ans Programm weiter, um dadurch die Speichervewaltung zu beschleunigen.

Es kann also sein, daß Speicher noch vorhanden ist und dieser zwischenzeitlich noch nicht von was anderem überschrieben wurde, womit es "zufällig" passieren kann, daß ein Zugriff auf etwas doch noch "funktioniert, obwohl es eigentlich nicht mehr da ist .... jenachdem ob der Speicher doch freigegeben oder überschrieben wurde.



Man kann FastMM auch so einstellen, daß freigegebener Speicher zumindestens überschrieben wird, damit spätere Zugriffe erkannt werden, weil ja nun die Datenstrucktur zerstört ist und genauso kann FastMM nun erkennen, ob man in Speicher, nach dessen Freigabe, was reinschreibt (Bufferoverruns und Schreibzugriffe nach Freigabe).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Jul 2012 um 11:52 Uhr)
  Mit Zitat antworten Zitat