Boost logo

Boost :

From: Tom Titchener (Tom.Titchener_at_[hidden])
Date: 2006-12-22 14:19:31


I always get the memory leak trace at the end of this post when I run a trivial application that uses boost threads (source below).

I'm compiling with multi-threaded debug dll (/MDd).

I'm building a console app.

It's on win32/xpsp2 with vc8.

I haven't found any thread shutdown code to run in the boost threads documentation.

Have I missed another compiler or linker option?

I'd really like to use leak detection so I know I'm not losing memory in my own code.

Thanks,

Tom Titchener

#define WIN32_LEAN_AND_MEAN
#include <crtdbg.h>
#include <stdio.h>
#include <iostream>
#include <boost/thread.hpp>

using namespace std;

void CRTSetup(void) {
      _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG));
      _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG));
      _CrtSetDbgFlag(_CRTDBG_DELAY_FREE_MEM_DF | _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG));
      _CrtSetDbgFlag(_CRTDBG_CHECK_ALWAYS_DF | _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG));
      _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE );
      _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT );
      _CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE );
      _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT );
      _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE );
      _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT );
}
void dummy(void) {
      cerr << "dummy" << endl;
}
void main() {
      CRTSetup();
      boost::thread t(dummy);
      t.join();
}

dummy
Detected memory leaks!
Dumping objects ->
{145} normal block at 0x003575D8, 24 bytes long.
 Data: < < > 00 3C 15 00 FF FF FF FF 00 00 00 00 00 00 00 00
{144} normal block at 0x003575A0, 8 bytes long.
 Data: < u5 > D8 75 35 00 01 CD CD CD
Object dump complete.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk