最近在一标准SDI(用向导生成的框架,未加任何代码)中测试VC6.0标准库STL的性能(static library模式下)。
BOOL CMyApp::InitInstance(){
std::list<RECT*> reclist;
RECT* pRect1 = new RECT;
RECT* pRect2 = new RECT;
reclist.push_front(pRect1);
reclist.push_front(pRect2); while(!reclist.empty()){
delete reclist.front();
reclist.pop_front();
}
}
BOUNDSCHECKER检测到如下内存泄漏:
   Memory leak 320 bytes allocated by HeapAlloc in sbheap.c (102), HANDLE: 0x02D71E90。
请大虾指点如何解决。

解决方案 »

  1.   

    即在程序中不定义任何容器实例,只包含<list>头文件,
    BOUNDSCHECKER内存泄漏依然检测到同样的内存泄漏:
       Memory leak 320 bytes allocated by HeapAlloc in sbheap.c (102), HANDLE: 0x02D71E90。
    用C++编程,能不用STL吗?
    VC++的STL实现版本源码可读性极差,这位前辈没有一点软件工程的概念,
    源码中到处都是下划线,_Ty,_T1,_T2,简直不堪入目。
      

  2.   

    完全同意。看VC的STL实现简直是受罪.sbheap.c应该不是你的程序文件吧。
      

  3.   

    sbheap.c是VC的CRT库中的文件,不是俺的。
    调试跟踪时WinMain一起动就调用了,
    大概是STL中的内存分配机制和MFC的分配机制有冲突所致。