我正在使用C ++编写一个程序,需要使用new分配的动态内存。我有一个案例,用户可以关闭该程序,但我没有删除所有剩余的内存。
注意:此内存由关闭时都存在的对象指针列表进行跟踪,因此不会丢失任何内存。
如果我在关闭之前没有清理阵列,那么valgrind会假设剩余的内存是泄漏内存吗?
另一个问题是,如果我/ do /循环通过我的对象数组并在程序关闭之前删除所有内存,Valgrind是否能够确定是否有任何内存泄露?
修改
我做了循环并释放了所有内存,现在Valgrind说我没有泄漏。这可以信任吗?
答案 0 :(得分:0)
如果泄漏内存,则泄漏内存,valgrind将(通常)检测并报告内存。保持指针直到程序终止不够好(说服valgrind)。如果你确实需要做类似的事情,你可以改为使用“池”(例如Boost.Pool
)进行分配,然后在程序结束时立即解除分配整个池。
既然你已经说过你有一个循环和删除所有内容的解决方案,那很好。保持这种方式。如果最终在关机时出现性能问题,请考虑池方法。