> Hi Alberto,
> 
> According to my debuggin on VC7/WinXP, delete
> aTranscoder will invoke the global delete operator,
> which happen to work fine simply because the current
> memory manager implementation happen to use global new
> operator as well.
> 
> If the memory manager implementation changed to use
> malloc instead, that code will crash.

This is not the behavior I see with this small program, using VC++ 6, 7.0, 
and 7.1:

#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/util/TransService.hpp>

int
main()
{
    using xercesc::XMLPlatformUtils;
    using xercesc::XMLTransService;
    using xercesc::XMLTranscoder;

    XMLPlatformUtils::Initialize();

    XMLTransService* const  theService =
        XMLPlatformUtils::fgTransService;

    XMLTransService::Codes  theCode;

    XMLTranscoder* const    theTranscoder =
        theService->makeNewTranscoderFor(
                "utf-8",
                theCode,
                1024);

    delete theTranscoder;

    return 0;
}

The delete expression:

delete theTranscoder;

results in the following calls:

xercesc_2_6::XMLUTF8Transcoder::~XMLUTF8Transcoder()
xercesc_2_6::XMemory::operator delete()
  xercesc_2_6::MemoryManagerImpl::deallocate()

which is exactly why I would expect, and global operator delete is called 
within MemoryManagerImpl::deallocate(), which is correct.

If this is not what you're seeing, there is something wrong with your 
environment.

Dave

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to