Search code examples
c++boostmemory-leaks

Switch off Memory Leak Detection in boost.Test


I'm currently using boost.Test and I'm wondering if it might be possible to switch off the Memory Leak Detection, if one compiles in DEBUG Mode.

I don't want to use the command line parameter switch --detect_memory_leak=0. I'm looking for a kind of #define parameter, that switches off the memory leak detection feature in DEBUG mode.

It would be also suitable for me to switch off the memory detection feature by defining a certain compiler switch. I'm currently using Microsoft Visual Studio 2010.

#define BOOST_TEST_DETECT_MEMORY_LEAK 0 // Preprocesser switch I'm looking for!
#define BOOST_TEST_MODULE MyUnitTest
#include <boost/test/included/unit_test.hpp>

BOOST_AUTO_TEST_SUITE(MySuite);

    BOOST_AUTO_TEST_CASE(MyUnitTest) {
       /// Following code has a memory leak
       /// ....
    }

BOOST_AUTO_TEST_SUITE_END()

Solution

  • You can directly set the environment variable BOOST_TEST_DETECT_MEMORY_LEAK to 0 or use putenv :

    #include <cstdlib>
    //...
    BOOST_AUTO_TEST_CASE(MyUnitTest) {
      putenv("BOOST_TEST_DETECT_MEMORY_LEAK=0");
      //...
    }
    

    Edit

    As you're using visual studio 2010, you can try _putenv or _wputenv :

    #include <stdlib.h>
    //...
    BOOST_AUTO_TEST_CASE(MyUnitTest) {
      _putenv("BOOST_TEST_DETECT_MEMORY_LEAK=0");
      //...
    }
    

    Otherwise, I found a function detect_memory_leaks in the Boost documentation but it seems to be only available on recent boost version.