Bonjour
J'essaye de comprendre le fonctionnement du debugage de la CRT:
J'ai fait un programme simple:
Quand je le lance, j'ai une sortie du style:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #include <crtdbg.h> #include <iostream> using namespace std; #ifndef _DEBUG #define _DEBUG #endif #define _CRTDBG_MAP_ALLOC int main(){ _CrtMemState *state=new _CrtMemState(); bool sd=_CrtDumpMemoryLeaks(); delete state; }
Detected memory leaks!
Dumping objects ->
{53} normal block at 0x00A31760, 52 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Object dump complete.
En revanche, quand je fait ce programme:
La tout est ok.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int main(){ bool sd=_CrtDumpMemoryLeaks(); }
Or, pour moi, dans mon premier programme il n'y a pas de mémory leaks.
Car la zone mémoire allouée par new est bien pointée par state. Je ne vois pas ce qu'il veut dire par memory leaks detected. Si j'avais fait ca:
là oui,il y aurait eu une memory leaks.
Code : Sélectionner tout - Visualiser dans une fenêtre à part new _CrtMemState();
Merci
Partager