Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: FastMM4 detected that a block has been modified after being freed

  Alt 13. Mär 2011, 14:35
Man muss die Meldung genau lesen.
Zitat von FastMM:
FastMM detected that a block has been modified after being freed.
Dort steht nicht, das das freigegebene Objekt nochmals genutzt wurde, sondern das der Speicherbereich des Objektes nach dem Freigeben nochmals beschrieben wurde. Von wem auch immer.

FastMM überschreibt beim Destroy den von Objekt benutzten Speicher mit Daten, versieht ihn sozusagen mit einem Fingerabdruck. beim Aufruf von "CheckBlocksOnShutdown" wird geprüft, ob der Fingerabdruck noch stimmt.

WO und WER das war, steht da nicht. Nur DAS es passiert ist.

Naheliegend ist der Fall, den sx2008 erklärt hat
Dein Code hat einen Speicherblock (=ein Objekt) verändert, nachdem es freigegeben wurde.
Aber zwingend ist das nicht.

Auch ein nicht abgefangener RangeCheck (Zugriff über Array-Grenzen hinweg) kann u.A. die Ursache sein (Schalte mal RangeCheck ein).

Da es sich beim Objekt um ein Singleton handelt, könntest Du dir einfach den Speicherbereich anzeigen lassen und schauen, in welchem Schritt das Überschreiben passiert.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")

Geändert von alzaimar (13. Mär 2011 um 14:40 Uhr)
  Mit Zitat antworten Zitat