发现不少MFC类都是从它派生的,请问这个类有什么特点,那些派生自它的类为什么要从它派生?
#if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)
void* PASCAL CNoTrackObject::operator new(size_t nSize, LPCSTR, int)
{
return CNoTrackObject::operator new(nSize);
}#if _MSC_VER >= 1200
void PASCAL CNoTrackObject::operator delete(void* pObject, LPCSTR, int)
{
if (pObject != NULL)
::LocalFree(pObject);
}
#endif
#endifvoid* PASCAL CNoTrackObject::operator new(size_t nSize)
{
void* p = ::LocalAlloc(LPTR, nSize);
if (p == NULL)
AfxThrowMemoryException();
return p;
}void PASCAL CNoTrackObject::operator delete(void* p)
{
if (p != NULL)
::LocalFree(p);
}

解决方案 »

  1.   

    这个类, 据说是 因为 一般的new分配内存后,不仅仅有内存快,还需要内存块来记录 你需要获得的内存块。如果是在debug下,那么就耗内存了。所以mfc就诞生了这么一个类。当然,你或许考虑到:如果这样以来,那么如何跟踪内存泄露呢。原因是:不可能发生。采用tls机制。详细参考 《windows程序设计》王艳萍