Cannot use DEBUG_NEW to trace this leak.

Tech-Archive recommends: Fix windows errors by optimizing your registry



Hi,

I have some old code that I am trying to use in my current project.
It uses standard lib and vectors.

The error I get is as follows.

//---------------
Detected memory leaks!
Dumping objects ->
{193} normal block at 0x016DA0A8, 16 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
//---------------

it does not tell me where the leak comes from.

I have narrowed down the code as follow where the error could be.
I would rather not change the code as much as possible.

//-------
// in the constructor
m_pData = new std::string[ someKnownSize + 1]
memset( m_pData, 0, (n+1)*sizeof(std::string) );
...

//-------
// The destructor
if( NULL != m_pData )
delete [] ( m_pData );
m_pData = NULL;
m_nSize = 0;


//-------
// in a function
void add( std::string &s, int len )
{
m_pData[m_nSize++] = std::string(s, len ) ;
}

//-------

if I remove the lines m_pData[m_nSize++] = std::string(s, len ) ; then I have no leak.

The file with the error does not use #include "stdafx.h", (but it has #include "windows.h")
and as such I cannot use:

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

What could be the problem and how can I find the leak?

Simon

.



Relevant Pages

  • Re: Memory-Leak in MFC Dialog?
    ... genau das gleiche tue (dabei kommt's übrigens nicht drauf an, wie die MFC gelinkt ist): ... Dumping objects -> ... Dieses Leak ensteht nur wenn, ... if (hWnd!= NULL) ...
    (microsoft.public.de.vc)
  • Re: is this memory leak something I can fix?
    ... Dumping objects -> ... normal block at 0x015B95D8, 88 bytes long. ... Those numbers like and give you a way to find out what really caused the leak, which almost certainly originates in something done by your code. ... The numbers are allocation order numbers. ...
    (microsoft.public.vc.debugger)
  • Re: Cannot use DEBUG_NEW to trace this leak.
    ... Simon wrote: ... It uses standard lib and vectors. ... it does not tell me where the leak comes from. ... // The destructor ...
    (microsoft.public.vc.mfc)
  • Re: is this memory leak something I can fix?
    ... Dumping objects -> ... normal block at 0x015B95D8, 88 bytes long. ... To me it look like it's a leak in some MFC function. ... Is there something I can do to fix this without having to change MFC? ...
    (microsoft.public.vc.debugger)
  • Re: stl::string memory leak associated with polymorphism
    ... only the default destructor of Base ... debug heap. ... Thus I have a 32 bytes leak per call. ... When the string "0123456789012345" is less than 16 bytes long, ...
    (microsoft.public.vc.stl)