Tweakers,
Ik heb denk ik een relatief simpele vraag. Ik ben bezig met het ontwikkelen van een programma in VS 2008 (in C++). Op verschillende plaatsen gebruik het keyword "new". Het logische gevolg is natuurlijk dat ik dan ook "delete" moet gaan gebruiken om memory leaks te voorkomen. Dit snap ik opzich wel alleen maar omdat ik nog lerende ben wil ik ook weten of alles goed wordt opgeruimd. Oftewel, ik moet weten of er geen memory leaks overblijven.
Ik weet dat het via de debugger zou moeten kunnen. Het is mij alleen onduidelijk hoe dit precies gedaan moet worden. Ik heb vanzelfsprekend al wel gezocht op google en MSDN maar ik kan helaas geen eenduidige "How To:" vinden. Moet ook bekennen dat ik door de bomen het bos niet meer zie....
Ik heb dit wel gevonden maar weet niet goed hoe ik het moet toepassen. (lees: waar moet ik in mijn code moet neerzetten )
en bij de properties van de m'n project:
Configuration Properties->C/C++->preprocessor->Preprocessor Definitions: _DEBUG
Wie o wie kan mij een handje helpen?
edit::
Heb info gevonden, heb alleen nog 1 vraag daarover.
Mijn info komt hier vandaan:
MSDN
ik moet dus dit includen:
Het probleem is dat ik hier geen informatie krijg over waar de leak zit.
Daar staat ook iets over op dezelfde MSDN pagina:
Ik heb denk ik een relatief simpele vraag. Ik ben bezig met het ontwikkelen van een programma in VS 2008 (in C++). Op verschillende plaatsen gebruik het keyword "new". Het logische gevolg is natuurlijk dat ik dan ook "delete" moet gaan gebruiken om memory leaks te voorkomen. Dit snap ik opzich wel alleen maar omdat ik nog lerende ben wil ik ook weten of alles goed wordt opgeruimd. Oftewel, ik moet weten of er geen memory leaks overblijven.
Ik weet dat het via de debugger zou moeten kunnen. Het is mij alleen onduidelijk hoe dit precies gedaan moet worden. Ik heb vanzelfsprekend al wel gezocht op google en MSDN maar ik kan helaas geen eenduidige "How To:" vinden. Moet ook bekennen dat ik door de bomen het bos niet meer zie....
Ik heb dit wel gevonden maar weet niet goed hoe ik het moet toepassen. (lees: waar moet ik in mijn code moet neerzetten )
C++:
1
| _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); |
en bij de properties van de m'n project:
Configuration Properties->C/C++->preprocessor->Preprocessor Definitions: _DEBUG
Wie o wie kan mij een handje helpen?
edit::
Heb info gevonden, heb alleen nog 1 vraag daarover.
Mijn info komt hier vandaan:
MSDN
ik moet dus dit includen:
C++:
1
2
3
| #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> |
Het probleem is dat ik hier geen informatie krijg over waar de leak zit.
Daar staat ook iets over op dezelfde MSDN pagina:
Bij mij ziet het er dus zo uit. Ik gebruik alleen WEL de betreffende define. Dus ik snap niet hoe dat komt. Wie weet het wel?If you do not use the #define _CRTDBG_MAPALLOC statement, the memory leak dump would look like this:
Detected memory leaks!
Dumping objects ->
{18} normal block at 0x00780E80, 64 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
[ Voor 27% gewijzigd door r0_ op 16-12-2008 11:31 ]