Freigeben über


Speicherverlusterkennung und -isolation

Aktualisiert: November 2007

Dieses Thema gilt für folgende Anwendungsbereiche:

Edition

Visual Basic

C#

C++

Web Developer

Express

Nur "Systemeigen"

Standard

Nur "Systemeigen"

Pro und Team

Nur "Systemeigen"

Tabellenlegende:

Vorhanden

Nicht vorhanden

Befehl oder Befehle, die standardmäßig ausgeblendet sind.

Die Möglichkeit, Arbeitsspeicher dynamisch zu reservieren und freizugeben, ist eines der leistungsstärksten Features der C/C++-Programmierung; die größte Stärke kann jedoch auch schnell zum größten Schwachpunkt werden. Dies gilt zweifellos für C/C++-Anwendungen, bei denen Probleme mit der Speicherverwaltung zu den häufigsten Fehlerquellen zählen.

Einer der subtilsten und äußerst schwer erkennbaren Fehler ist der Speicherverlust, d. h., die Unfähigkeit, zuvor reservierten Speicher wieder ordnungsgemäß freizugeben. Geringe Speicherverluste, die lediglich einmal auftreten, werden u. U. gar nicht bemerkt. Programme mit großen oder progressiven Speicherverlusten können jedoch Symptome aufweisen, die von eingeschränkter (und ständig abnehmender) Leistung bis hin zum kompletten Speicherverlust reichen. Hinzu kommt, dass ein Programm, das Speicherverluste verursacht, so viel Speicherplatz belegen kann, dass ein anderes Programm fehlschlägt. Der Benutzer hat in diesem Fall kaum eine Möglichkeit, die Fehlerursache zu ermitteln. Darüber hinaus können auch geringfügige Speicherverluste symptomatisch für andere Probleme sein.

Der Visual Studio-Debugger und die C-Laufzeitbibliotheken (CRT) bieten zu diesem Zweck effiziente Methoden, mit deren Hilfe Speicherverluste aufgespürt und identifiziert werden können. In den folgenden Abschnitten erfahren Sie, wie Sie Speicherverluste unter Verwendung der CRT-Debugfunktionen ermitteln:

Zur Erkennung von Speicherverlusten in MFC-Programmen stellt MFC eigene Tools bereit. Weitere Informationen hierzu finden Sie unter Feststellen von Speicherverlusten in MFC.

Siehe auch

Konzepte

Debuggersicherheit

Weitere Ressourcen

Debuggen von systemeigenem Code