?
Ich hatte das selbe Problem und auch beim freigeben eines Stringes und bin auf Eure Diskussion gestossen. Nach immer fast identisch 641,17 Sekunden hatte ich den Absturz beim freigeben eines Objektes, welches 2 Strings enthielt in der Freigabe der Strings. Ein Objekt dieser Klasse wurde da schon mehree tausend mal erzeugt und einige hundert Mal freigegeben.
Ich habe dann vom Executable und allen Dlls die Compilereinstellungen geprüft. Diese waren identisch. Ich habe vor meinen new und delete Aufrufen den Heap überprüft und es wasr immer der gleiche.
Alle delete Aufrufe waren immer in der gleichen DLL, in der auch das new für die Klasse stand. Ich benutze Fabriken um meine Objekte zu erzeugen, und jede Fabrik recycelt Ihre Objekte auch.
Nach mehreren Tagen debuggen mit Betrachtung der Speicherbereiche um die Datenblöcke der Strings, ist mir aufgefallen, dass das Nomansland beim delete nicht mit 0xFDFDFDFD initialisiert war.
Mittlerweile habe ich die Lösung des Problems gefunden. Eine abgeleitete Klasse hat im Konstruktor explizit den Konstruktor ihrer Superklasse aufgerufen. Da aber am Anfang im Konsruktionsprozess die Konstruktoren von der obersten Superklasse her zu konstruierten Klasse hin aufgerufen werden, führt das dazu, dass sich Konstruktoren im Kreis aufrufen. Dies hat dann einen Aufruf des Destruktors zuviel (bereits während der Konstruktion) zur Folge.
Nachdem ich nun den expliziten Auftruf des Konstruktors das Superklasse entfernt habe, läuft es problemlos.