delete失败的问题,非新手问题
最近遇到一个比较诡异的问题,初步猜测可能和windows的内存回收机制有关
出问题的代码如下
for(i = 0; i < vecSeg.size(); i ++ ) { SEG *item = NULL; item = vecSeg[i]; delete item; } if (1) { std::vector<SEG*> Stmp; //释放vector占用的空间 //vecSeg.swap(Stmp); Stmp.swap(vecSeg); }#define breakpoint _asm int 3int main(){ vector<int*> vec((int)1e8); breakpoint // 400MB allocated { vector<int*> temp; temp.swap(vec); } breakpoint // 400MB released return 0;}
[解决办法]
想知道你初始化代码是怎么写的,怎么申请空间的
[解决办法]
SEG是不是重载了operator delete/new? 有自己的free list,没有真正释放内存到堆?