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进行软件调试时遇到了难题:如何判断故意触发的内存不足错误之后是否存在内存泄漏?通过特定宏定义尝试模拟内存溢出场景,但无法确认变量是否被正确清理。
1万+

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



