purifiy warns about free mismatched memory
Hello,
When I compile the small program below that just allocates and deletes an
object
I get an error message under purify. There is no problem when I don't
include any
header file, but as soon as I include <memory>. It turns out that what makes
the difference is in <iterator>, and in turn in <xutility>, .... , and
ultimately it is
that inside <use_ansi.h> a lib is linked.
The problem appears with VC 7
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
and with /MD, and it appears in debug and release mode. There is no problem
with /ML or /MT
//#include <memory>
//#include <iterator>
//#include <xutility>
//#include <climits>
//#include <yvals.h>
//#include <use_ansi.h>
// Here comes the code of use_ansi.h:
#if _MSC_VER > 1000
#pragma once
#endif
#ifndef _USE_ANSI_CPP
#define _USE_ANSI_CPP
#ifdef _MT
#if defined(_DLL) && !defined(_STATIC_CPPLIB)
#ifdef _DEBUG
#pragma comment(lib,"msvcprtd")
#else // _DEBUG
#pragma comment(lib,"msvcprt")
#endif // _DEBUG
#else // _DLL && !STATIC_CPPLIB
#ifdef _DEBUG
#pragma comment(lib,"libcpmtd")
#else // _DEBUG
#pragma comment(lib,"libcpmt")
#endif // _DEBUG
#endif // _DLL && !STATIC_CPPLIB
#else // _MT
#ifdef _DEBUG
#pragma comment(lib,"libcpd")
#else // _DEBUG
#pragma comment(lib,"libcp")
#endif // _DEBUG
#endif
#endif // _USE_ANSI_CPP
struct X {int x;};
int main() {
X * ptr = new X;
delete ptr;
return 0;
}
Here is the log of purify
Idea Starting Purify'd C:\cgal\develop\Leak\leak.exe at 11/09/2006 11:24:19
Idea Starting main
Email FMM: Freeing mismatched memory in delete(void *) {1 occurrence}
Address 0x01848b88 points into a malloc'd block in heap 0x01840000
Location of free attempt
delete(void *) [.\build\intel\dll_obj\longjmp.obj:23]
??? [C:\cgal\develop\Leak\leak.exe ip=0x0040100D]
??? [C:\cgal\develop\Leak\leak.exe ip=0x00404059]
Allocation location
malloc
[F:\VS70Builds\3052\vc\crtbld\crt\src\intel\memset.asm:53]
??? [C:\cgal\develop\Leak\leak.exe ip=0x00401031]
??? [C:\cgal\develop\Leak\leak.exe ip=0x00404059]
Idea Summary of all memory leaks... {140 bytes, 1 block}
Idea Exiting with code 0 (0x00000000)
Idea Program terminated at 11/09/2006 11:24:23
The question is if this is a serious problem, and I should do something
about it.
Best regards,
andreas