$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: tankbattle (tankbattle_at_[hidden])
Date: 2006-09-06 09:02:22
Iâve written a MFC based console application to test boost.thread library. 
However, IDE suggested that there are memory leaks in the program. All that Iâ
ve done is creating a class A which implements operator () and declared an 
instance of boost::thread which make use of A. How can that make memory leak? 
My IDE is vs.net 2003 and my OS is windows xp sp1.
My code is as follows:
// threadmemleak.cpp : 
//
#include "stdafx.h"
#include "threadmemleak.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#include <boost\thread\thread.hpp>
class A
{
public:
        A()
        {
        }
        void operator() ()
        {
                //Sleep(1000);
        }
};
// Single application object
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
        int nRetCode = 0;
        // Initialize MFC and display error on failure
        if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
        {
                // TODO: Correct your code so as to meet your need
                _tprintf(_T("Fatal error: MFC initialization failed\n"));
                nRetCode = 1;
        }
        else
        {
                // TODO: Write your own code
                A a;
                boost::thread thread1(a);
                thread1.join();
        }
        return nRetCode;
}
 and output of IDE is
Detected memory leaks!
Dumping objects ->
{153} normal block at 0x00376A70, 24 bytes long.
 Data: < \              > B0 5C 14 00 FF FF FF FF 00 00 00 00 00 00 00 00 
{152} normal block at 0x00376CE0, 8 bytes long.
 Data: <pj7     > 70 6A 37 00 01 CD CD CD 
Object dump complete.