memory debugging using VC++ debug CRT works for DLL wxWin builds as well.

The relevant macros are now in include/wx/msw/msvcrt.h


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1999-01-31 23:32:58 +00:00
parent 06b5713445
commit 6e0d9d4331
3 changed files with 76 additions and 51 deletions

View File

@@ -61,11 +61,9 @@
// Also, OLE is used not just for drag and drop (it's used by automatn.cpp).
// #if wxUSE_DRAG_AND_DROP
#if !defined(__GNUWIN32__) && !defined(__SC__) && !defined(__SALFORDC__)
#include <ole2.h>
#include <ole2.h>
#endif
// #endif
#include <string.h>
#include <ctype.h>
@@ -73,31 +71,7 @@
#include <commctrl.h>
#endif
// use debug CRT functions for memory leak detections in VC++ if we're not
// using wxWindows own methods
#if defined(__WXDEBUG__) && defined(_MSC_VER) && !wxUSE_GLOBAL_MEMORY_OPERATORS && !defined(__NO_VC_CRTDBG__)
#define wxUSE_VC_CRTDBG
#else
#undef wxUSE_VC_CRTDBG
#endif
#ifdef wxUSE_VC_CRTDBG
// VC++ uses this macro as debug/release mode indicator
#ifndef _DEBUG
#define _DEBUG
#endif
/* Need to undef new if including crtdbg.h */
#ifdef new
#undef new
#endif
#include <crtdbg.h>
#if defined(__WXDEBUG__) && wxUSE_GLOBAL_MEMORY_OPERATORS && wxUSE_DEBUG_NEW_ALWAYS
#define new new(__FILE__,__LINE__)
#endif
#endif // wxUSE_VC_CRTDBG
#include "wx/msw/msvcrt.h"
extern char *wxBuffer;
extern char *wxOsVersion;
@@ -163,13 +137,6 @@ bool wxApp::Initialize()
wxBuffer = new char[1500];
#ifdef wxUSE_VC_CRTDBG
// do check for memory leaks on program exit
// (another useful flag is _CRTDBG_DELAY_FREE_MEM_DF which doesn't free
// deallocated memory which may be used to simulate low-memory condition)
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
#endif // debug build under MS VC++
wxClassInfo::InitializeClasses();
#if wxUSE_RESOURCES
@@ -258,8 +225,7 @@ bool wxApp::Initialize()
wxWinHandleList = new wxList(wxKEY_INTEGER);
// This is to foil optimizations in Visual C++ that
// throw out dummy.obj.
// This is to foil optimizations in Visual C++ that throw out dummy.obj.
// PLEASE DO NOT ALTER THIS.
#if defined(_MSC_VER) && !defined(WXMAKINGDLL)
extern char wxDummyChar;
@@ -590,6 +556,11 @@ int wxEntry(WXHINSTANCE hInstance,
int nCmdShow,
bool enterLoop)
{
// do check for memory leaks on program exit
// (another useful flag is _CRTDBG_DELAY_FREE_MEM_DF which doesn't free
// deallocated memory which may be used to simulate low-memory condition)
wxCrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);
// take everything into a try-except block in release build
// FIXME other compilers must support Win32 SEH (structured exception
// handling) too, just find the appropriate keyword in their docs!