2009-06-18 5 views
3

In Ordnung, ich habe eine exportierte Klasse in einer DLL. Diese Klasse enthält eine Liste von statischen Strings, die in einer ComboBox eines Dialogs innerhalb des Importprozesses verwendet werden. Diese Zeichenfolgen werden wie folgt deklariert und definiert:Statische Klassenvariable, exportiert von DLL, zeigt als Speicherleck

So funktioniert der eigentliche Export gut. Allerdings habe ich meinen VS 2008 Debugger Dumping-Speicher, der als

auftauchte
{129} normal block at 0x003D69F0, 32 bytes long. 
Data: <String 1> 

etc. 

Also, um zu bestimmen, wer diese Speicher undicht war ich mit ihnen in der Combo-Box angehalten, die sie für gemeint waren und geprüft, um zu sehen, ob die Leck war immer noch vorhanden, war es. Meine Frage ist also: Gibt es ein Problem beim Exportieren einer statischen Klassenvariablen aus einer DLL, wo es als Speicherleck betrachtet wird?

Antwort

2

Dies ist wahrscheinlich ein Problem mit der Reihenfolge, in der die statischen Variablen den Gültigkeitsbereich verlassen und wenn dlls entladen werden (mfc/crt).

Werfen Sie einen Blick auf this - Es beschreibt ziemlich genau das gleiche Problem, das Sie sehen.

Es gibt auch eine vorgeschlagene Lösung here, aber ich habe keine Ahnung, ob das funktioniert.

Ich hatte solche Probleme in der Vergangenheit und der einzige Weg, wie ich (sauber) diese False Positives loswerden konnte, ist, diese Statik als shared_ptr zu definieren und sie in einer globalen "Shutdown" -Methode zu zerstören .

Verwandte Themen