长期运行C++应用程序中的内存泄漏

tit*_*ian 3 c++ memory dictionary memory-leaks deque

我正在运行一个长期运行的C++应用程序,它分配不同的对象并将其存储在几个deque和map中,并且一次从这些数据结构中释放这些对象.我正在经历少量的内存增加(通常为1 mb到2我已经运行了内存泄漏检测器(valgrind),但我找不到任何可疑的内存泄漏.我想知道问题是否与deque和存储对象的地图有关.一旦从数据结构中弹出对象,deque和map的内存是否会将内存释放到OS?任何人都可以指出解决方案或内存增加的一般可能原因吗?

joh*_*ohn 6

C++标准不保证删除会释放内存到操作系统.事实上,许多标准C++库都没有这样做.如果您希望将内存释放到操作系统,则必须使用操作系统自己的内存分配例程.

标准C++库提供自定义分配器,可以帮助您执行此操作.

  • 在C++程序中`malloc`和`free`?那么`new`和[`std :: unique_ptr`](http://www.cplusplus.com/reference/memory/unique_ptr/)呢? (2认同)