请看代码:(vs2005) //delete int _tmain(int argc, _TCHAR* argv[]) { int *p=NULL; p= new int; delete p; //跟进 } //到达这里 void operator delete( void *pUserData ) { _CrtMemBlockHeader * pHead; RTCCALLBACK(_RTC_Free_hook, (pUserData, 0)); if (pUserData == NULL) return; _mlock(_HEAP_LOCK); /* block other threads */ __TRY /* get a pointer to memory block header */ pHead = pHdr(pUserData); /* verify block type */ _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)); _free_dbg( pUserData, pHead->nBlockUse ); //这里的调用和free相同,请参照free。 __FINALLY _munlock(_HEAP_LOCK); /* release other threads */ __END_TRY_FINALLY return; } delete在实现的时候调用了_free_dbg( pUserData, pHead->nBlockUse )函数,后面的分析同对free的分析。