Ignore:
Timestamp:
Jul 28, 2010, 3:36:28 PM (14 years ago)
Author:
Torben Dannhauer
Message:

implemented technique to debug memory leaks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • osgVisual/src/core/osgVisual.cpp

    r31 r86  
    1515*/
    1616
     17// Declare this in header.
     18//#include <windows.h>
     19#define _CRTDBG_MAP_ALLOC
     20#include <crtdbg.h>
     21
    1722#include <osg/ArgumentParser>
    1823#include <osg/Referenced>
     
    2126#include <visual_core.h>
    2227
     28const unsigned int MAX_NUM_EVENTS = 10;
    2329
    24 const unsigned int MAX_NUM_EVENTS = 10;
    25 const unsigned int SWAP_BYTES_COMPARE = 0x12345678;
    2630
    2731int main(int argc, char** argv)
    2832{
     33       
     34#ifdef _DEBUG
     35        #include <leakDetection.h>      // ugly but must be included inside the class
     36
     37    int tmp_flag;
     38
     39    HANDLE log_file = CreateFile("mem_log.txt", GENERIC_WRITE,FILE_SHARE_WRITE,
     40        NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     41
     42    _CrtSetReportMode(_CRT_ASSERT,_CRTDBG_MODE_FILE | _CRTDBG_MODE_WNDW |
     43        _CRTDBG_MODE_DEBUG);
     44    _CrtSetReportMode(_CRT_WARN,_CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);
     45    _CrtSetReportMode(_CRT_ERROR,_CRTDBG_MODE_FILE | _CRTDBG_MODE_WNDW |
     46        _CRTDBG_MODE_DEBUG);
     47
     48    // output to the file if not under VS
     49    _CrtSetReportFile(_CRT_ASSERT, log_file);
     50    _CrtSetReportFile(_CRT_WARN, log_file);
     51    _CrtSetReportFile(_CRT_ERROR, log_file);
     52
     53    tmp_flag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
     54    tmp_flag |= _CRTDBG_ALLOC_MEM_DF;
     55    tmp_flag |= _CRTDBG_DELAY_FREE_MEM_DF;
     56    tmp_flag |= _CRTDBG_LEAK_CHECK_DF;
     57
     58    _CrtSetDbgFlag(tmp_flag);
     59#endif
     60
    2961    // Use an ArgumentParser object to manage the program arguments.
    3062        osg::ArgumentParser arguments(&argc,argv);
     
    3668    core->initialize();
    3769
     70        // Set Pointer to null to destroy the objects before this function ends - otherwise memory leaks wil be detected.
     71        core = NULL;
     72
    3873        return 0;
    3974}
Note: See TracChangeset for help on using the changeset viewer.