I cannot solve this problem yet. I'm using VC6.0 as debug tool. I know I can produce deliberate out-of memory errors by macro __UHEAP_FAILNEXT(1), or User::LeaveNoMemory(). But How can I know whether memory leak occured after the fail? I've written the following code:
__UHEAP_MARK;
TInt32 *aaa = new(ELeave) TInt32[100];
//CleanupStack::PushL(aaa);
__UHEAP_FAILNEXT(1);
TInt32 *bbb = new(ELeave) TInt32[100000];
__UHEAP_MARKEND;
__UHEAP_MARKENDC(2);
and I found no matter I push aaa into CleanupStack or not, the emulator just displays the same information:"The memory is not enough, please close some applications and try again." -- That is, I still cannot tell out whether aaa has been orphaned in the memory.
I think, since such deliberate out-of memory producer tools have been designed, they must be designed to be used together with memory leak detecting tools, isn't it?
How do you do test? Thank you very much!
作者使用VC6.0进行软件调试时遇到问题,希望通过宏__UHEAP_FAILNEXT(1)等手段故意触发内存溢出错误来检测内存泄漏。但无论是否将分配的内存放入CleanupStack中,模拟器总是显示相同的内存不足提示,无法确定是否存在内存泄漏。
1万+

被折叠的 条评论
为什么被折叠?



