Re: Cannot use DEBUG_NEW to trace this leak.



In addition to what Dave & G said, you don't list what 'n' is equal to so perhaps you are memsetting past the end of the array of std:strings. I am also not sure why you would want to create an array of them that wya, but if you do the memset size should match the new size if you're trying to set an array to all nulls. It doesn't look like you've done anything to protect m_nSize from exceeding someKnownSize either so you could run past the end of your buffer depending on how many times you call add()


I've seen CDCDCD... used in debug mode as a filler for uninitialized memory.

Tom

"Simon" <spambucket@xxxxxxxxxxx> wrote in message news:5vpjc4F1nm1k3U1@xxxxxxxxxxxxxxxxxxxxx
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: Fix for memory leak in setenv/unsetenv
    ... so you are preserving the leak. ... y finds w within the array and reuses it. ... getenv() is performing a linear search for the first active occurrence ... values of environment variables would result in nearly reasonable ...
    (freebsd-current)
  • Re: Arrays
    ... If you copy over pointer types, then you get a memory leak. ... I haven't looked closely at your implementation, but when shifting blocks around inside a multi dimension array, these potentials for leaks are very real. ... ReDim Preserve columns ...
    (microsoft.public.vb.general.discussion)
  • Re: Tracking Memory leak
    ... Some compilers leak memory when a function returns either an ... array or a pointer to an array. ... memory, then experimenting with "some_size" might help ... it would help if you mentioned the compiler brand name, ...
    (comp.lang.fortran)
  • Re: Memory leak on adding Form to a DOM node
    ... The moment I change the form to something else the leak stops, ... First, there is useless concatenation. ... cellLeft.innerHTML = new Array( ... Third, this generates invalid markup, the tag is incomplete. ...
    (comp.lang.javascript)