关于STL内存泄露误报问题
这几天一直在查程序的内存泄露问题,那个visual leak detector 着实很好用,但是查出来的报告大篇幅的被stl误报问题占据。之所以会报告stl内存泄露,是因为stl自己的内存分配机制并不保证在容器析构的时候就回收内存,实验证明clear是没有回收内存的。 网上找到一个被称为“swap魔语”的惯用法来解决这个问题: vector<int> nums; nums.push_back(1); //push, push, push….. vector<int>().swap(nums); //swap magic word 这个hack做法的原理就是:通过交换函数swap,使得容器离开其自身的作用域,从而强制释放容器所占的内存空间。