CObject::operator delete
ライブラリのリリース環境では、delete 演算子は new 演算子で割り当てたメモリを解放します。
void PASCAL operator delete(
void* p
);
void PASCAL operator delete(
void* p,
void* pPlace
);
void PASCAL operator delete(
void* p,
LPCSTR lpszFileName,
int nLine
);
解説
デバッグ環境では、delete 演算子はメモリ リークを検出するためにデザインされたアロケーション モニタリング スキーマに組み入れられます。
コード行を使用する場合は、次のようにします。
#define new DEBUG_NEW
このコード行を .CPP ファイル内のすべての実装の前に使用する場合は、delete の 3 番目の構文が使用され、後でレポートできるようにファイル名と行番号が格納されます。 補足的なパラメーターは、マクロによって追加されます。
デバッグ環境で DEBUG_NEW を使用しなくても、メモリ リークを検出できます。ただし、ソース ファイル名や行番号はレポートされません。
new 演算子と delete 演算子をオーバーライドすると、この診断機能が働かなくなります。
使用例
CObject の例で使われている CAge クラスのリストについては、「CObList::CObList」を参照してください。
void CAge::operator delete(void* p)
{
free(p);
}
void CAge::operator delete(void *p, LPCSTR lpszFileName, int nLine)
{
UNREFERENCED_PARAMETER(lpszFileName);
UNREFERENCED_PARAMETER(nLine);
free(p);
}
必要条件
**ヘッダー:**afx.h