📄 mmem_impl.cpp
字号:
#include "MCRT/mtypes.h"
#include "MCRT/mmem_impl.h"
#include "mmem_list.h"
#include "ace/Synch.h"
#include <stdlib.h>
#include <string.h>
#ifdef M_MEM_TEST
MemTrace s_memTrace;
ACE_Thread_Mutex s_mutexList;
void* operator new( size_t nSize )
{
void* pBlock = ::malloc( nSize );
return pBlock;
}
void* operator new[]( size_t nSize )
{
void* pBlock = ::malloc( nSize );
return pBlock;
}
void* operator new( size_t nSize, const char* pFileName, mInt32 nLine )
{
void* pBlock = NULL;
pBlock = ::malloc( nSize );
if ( pBlock != NULL )
{
MemTraceNode* pNode = (MemTraceNode*)::malloc( sizeof(MemTraceNode) );
if ( pNode != NULL )
{
pNode->m_pBlock = pBlock;
pNode->m_nSize = nSize;
::strcpy( pNode->m_szFileName, pFileName );
pNode->m_nLine = nLine;
pNode->pNext = NULL;
ACE_Guard< ACE_Thread_Mutex > guard(s_mutexList);
s_memTrace.insert( pNode );
}
}
return pBlock;
}
void* operator new[]( size_t nSize, const char* pFileName, mInt32 nLine )
{
void* pBlock = NULL;
pBlock = ::malloc( nSize );
if ( pBlock != NULL )
{
MemTraceNode* pNode = (MemTraceNode*)::malloc( sizeof(MemTraceNode) );
if ( pNode != NULL )
{
pNode->m_pBlock = pBlock;
pNode->m_nSize = nSize;
::strcpy( pNode->m_szFileName, pFileName );
pNode->m_nLine = nLine;
pNode->pNext = NULL;
ACE_Guard< ACE_Thread_Mutex > guard(s_mutexList);
s_memTrace.insert( pNode );
}
}
return pBlock;
}
void operator delete( void* pBlock )
{
if ( pBlock != NULL )
{
ACE_Guard< ACE_Thread_Mutex > guard(s_mutexList);
s_memTrace.erase( pBlock );
::free( pBlock );
}
}
void operator delete[]( void* pBlock )
{
if ( pBlock != NULL )
{
ACE_Guard< ACE_Thread_Mutex > guard(s_mutexList);
s_memTrace.erase( pBlock );
::free( pBlock );
}
}
//avoid warning of compile
void operator delete( void* /* pBlock */, const char* /* pFileName */, mInt32 /* nLine */ )
{
}
//avoid warning of compile
void operator delete[]( void* /* pBlock */, const char* /* pFileName */, mInt32 /* nLine */ )
{
}
#endif //end M_MEM_TEST
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -