MFC里的CMemoryException異常就是表示內存不足的情況。不需要或不可能進一步限定。內存異常由new自動拋出。例如,如果您使用malloc編寫自己的內存函數,那么您將負責拋出內存異常。 不要直接使用此構造函數,而是調用全局函數AfxThrowMemoryException。此全局函數在內存不足的情況下可以成功,因為它在先前分配的內存中構造異常對象。
當我們在dum文件分析時,可以看到如下的異常信息:
ExceptionAddress: 768c2552 (KERNELBASE!RaiseException+0x00000062)
ExceptionCode: e06d7363 (C++ EH exception)
ExceptionFlags: 00000001
NumberParameters: 3
Parameter0: 19930520
Parameter1: 0093cb58
Parameter2: 69d9bd10
pExceptionObject: 0093cb58
_s_ThrowInfo : 69d9bd10
Type : class CMemoryException *
Type : class CSimpleException *
Type : class CException *
Type : class CObject *
Type : void *
此時,我們可以用!address -summary來查看進程內存使用情況在佐證