document ms compiler problems with placement delete

This commit is contained in:
Jeff Hill
2002-10-24 18:12:03 +00:00
parent c7a8baee1a
commit 8dc8be9ad7
23 changed files with 168 additions and 59 deletions

View File

@@ -278,8 +278,13 @@ void CASG::exception ( int status, const char *pContext,
void CASG::operator delete ( void * pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -248,8 +248,13 @@ void bhe::unregisterIIU ( tcpiiu & iiu )
void bhe::operator delete ( void * )
{
throw std::logic_error
( "compiler is confused about placement delete?" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}
void * bheFreeStore::allocate ( size_t size )

View File

@@ -133,8 +133,13 @@ void comBuf::throwInsufficentBytesException ()
void comBuf::operator delete ( void *pCadaver )
throw ( std::logic_error )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}
comBufMemoryManager::~comBufMemoryManager () {}

View File

@@ -73,8 +73,13 @@ void getCallback::exception (
void getCallback::operator delete ( void *pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -90,7 +90,12 @@ void getCopy::show ( unsigned level ) const
void getCopy::operator delete ( void *pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -62,7 +62,12 @@ void msgForMultiplyDefinedPV::ioCompletionNotify ( const char * pHostNameRej )
void msgForMultiplyDefinedPV::operator delete ( void *pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -86,8 +86,13 @@ void nciu::destroy ()
void nciu::operator delete ( void * pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}
void nciu::initiateConnect ()

View File

@@ -82,8 +82,13 @@ nciu & netReadNotifyIO::channel () const
void netReadNotifyIO::operator delete ( void * p )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -95,8 +95,13 @@ nciu & netSubscription::channel () const
void netSubscription::operator delete ( void * p )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -83,7 +83,12 @@ nciu & netWriteNotifyIO::channel () const
void netWriteNotifyIO::operator delete ( void * p )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -185,7 +185,12 @@ void oldChannelNotify::writeException ( int status, const char *pContext,
void oldChannelNotify::operator delete ( void *pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -72,7 +72,12 @@ void oldSubscription::exception (
void oldSubscription::operator delete ( void *pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -73,7 +73,12 @@ void putCallback::exception (
void putCallback::operator delete ( void * pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -251,8 +251,13 @@ repeaterClient::~repeaterClient ()
inline void repeaterClient::operator delete ( void *pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}
inline void * repeaterClient::operator new ( size_t size,

View File

@@ -94,8 +94,13 @@ void syncGroupReadNotify::show ( unsigned level ) const
void syncGroupReadNotify::operator delete ( void * p )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}
void * syncGroupReadNotify::operator new ( size_t size,

View File

@@ -88,8 +88,13 @@ void syncGroupWriteNotify::show ( unsigned level ) const
void syncGroupWriteNotify::operator delete ( void * p )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}
void * syncGroupWriteNotify::operator new ( size_t size,

View File

@@ -46,7 +46,13 @@ resTableIndex ipIgnoreEntry::hash () const
void ipIgnoreEntry::operator delete ( void * pCadaver )
{
throw std::logic_error ( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -123,8 +123,11 @@ void dbChannelIO::show ( unsigned level ) const
void dbChannelIO::operator delete ( void *pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
}

View File

@@ -189,6 +189,11 @@ dbSubscriptionIO * dbPutNotifyBlocker::isSubscription ()
void dbPutNotifyBlocker::operator delete ( void * pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -81,8 +81,13 @@ void dbSubscriptionIO::channelDeleteException ()
void dbSubscriptionIO::operator delete ( void * pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}
void * dbSubscriptionIO::operator new ( size_t size,

View File

@@ -50,7 +50,6 @@ public:
class epicsTimer { // X aCC 655
public:
virtual ~epicsTimer () = 0;
virtual void destroy () = 0;
virtual void start ( epicsTimerNotify &, const epicsTime & ) = 0;
virtual void start ( epicsTimerNotify &, double delaySeconds ) = 0;
@@ -63,11 +62,8 @@ public:
virtual expireInfo getExpireInfo () const = 0;
double getExpireDelay ();
virtual void show ( unsigned int level ) const = 0;
private:
void * operator new ( size_t );
void * operator new [] ( size_t );
void operator delete ( void * );
void operator delete [] ( void * );
protected:
virtual ~epicsTimer () = 0; // protected => delete() must not be called
};
class epicsTimerQueue { // X aCC 655
@@ -86,11 +82,6 @@ public:
virtual void release () = 0;
protected:
virtual ~epicsTimerQueueActive () = 0;
private:
void * operator new ( size_t );
void * operator new [] ( size_t );
void operator delete ( void * );
void operator delete [] ( void * );
};
class epicsTimerQueueNotify { // X aCC 655

View File

@@ -49,7 +49,7 @@ void timer::destroy ()
{
timerQueue & queueTmp ( this->queue );
this->~timer ();
timer::operator delete ( this, queueTmp.timerFreeList ) ;
//timer::operator delete ( this, queueTmp.timerFreeList ) ;
}
void timer::start ( epicsTimerNotify & notify, double delaySeconds )
@@ -225,13 +225,23 @@ void timer::show ( unsigned int level ) const
void timer::operator delete ( void * pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}
void epicsTimerForC::operator delete ( void * pCadaver )
{
throw std::logic_error
( "compiler is confused about placement delete" );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
errlogPrintf ( "%s:%d this compiler is confused about placement delete - memory was probably leaked",
__FILE__, __LINE__ );
}

View File

@@ -55,6 +55,11 @@ private:
epicsTimerNotify * pNotify; // callback
void privateStart ( epicsTimerNotify & notify, const epicsTime & );
timer & operator = ( const timer & );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
void * operator new ( size_t size );
void operator delete ( void * );
friend class timerQueue;
@@ -75,6 +80,11 @@ private:
void * pPrivate;
expireStatus expire ( const epicsTime & currentTime );
epicsTimerForC & operator = ( const epicsTimerForC & );
// Visual C++ .net appears to require operator delete if
// placement operator delete is defined? I smell a ms rat
// because if I declare placement new and delete, but
// comment out the placement delete definition there are
// no undefined symbols.
void * operator new ( size_t size );
void operator delete ( void * );
friend class timerQueue;
@@ -119,14 +129,13 @@ class timerQueueActive : public epicsTimerQueueActive,
public timerQueueActiveMgrPrivate {
public:
timerQueueActive ( bool okToShare, unsigned priority );
virtual ~timerQueueActive () = 0;
epicsTimer & createTimer ();
epicsTimerForC & createTimerForC ( epicsTimerCallback pCallback, void *pArg );
void show ( unsigned int level ) const;
bool sharingOK () const;
unsigned threadPriority () const;
void * operator new ( size_t );
void operator delete ( void * );
protected:
virtual ~timerQueueActive () = 0;
private:
timerQueue queue;
epicsEvent rescheduleEvent;
@@ -178,7 +187,7 @@ public:
epicsTimerQueuePassiveForC ( epicsTimerQueueRescheduleCallback pCallback, void *pPrivate );
void destroy ();
protected:
virtual ~epicsTimerQueuePassiveForC ();
~epicsTimerQueuePassiveForC ();
private:
epicsTimerQueueRescheduleCallback pCallback;
void *pPrivate;