Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.061 Beiträge
Delphi 12 Athens
|
AW: EAccessViolation sporadisch beim Beenden eines Programms
29. Jul 2012, 12: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).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
Geändert von himitsu (29. Jul 2012 um 12:52 Uhr)
|