すいません戻り値見たらm_dwRefの保持する値が壊れてました
以下のコードなら大丈夫でしょうか?
DWORD HAGE::Delete(){
m_dwRef = m_dwRef - 1;
if( m_dwRef == 0 ){
delete this;
return 0;
}
return m_dwRef;
}