Ein einfacher Memory Leak Detektor ist in der C Run-time Library (CRT) integriert.
Details seiner Funktionsweise sind hier beschrieben:
Um ihn in einem C++-Programm zu aktivieren, sind am Anfang der C++-Quelldatei folgende Zeilen hinzuzufügen:
#define _CRTDBG_MAP_ALLOC
#include <cstdlib>
#include <crtdbg.h>
#ifdef _DEBUG
#ifndef DBG_NEW
#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
#define new DBG_NEW
#endif
#endif // _DEBUGDie endgültige Aktivierung findet in der main-Funktion statt:
int main() {
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
// statements of cpp program
return 0;
}Sind im Programm Memory Leaks vorhanden, werden diese - bei Ausführung des Programms mit dem Debugger - im Output-Fenster angezeigt. So hinterlässt beispielsweise die Anweisung
int* ip = new int[10];ohne korrespondierende delete-Anweisung folgende Ausgaben im Output-Fenster nach der Programmausführung:
Detected memory leaks!
Dumping objects ->
C:\Development\MemoryLeaks.cpp(22) : {151} normal block at 0x00934A10, 40 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.