当我创建一个空的控制台应用程序并在其中使用STL容器时,FastMM在应用程序关闭时报告内存泄漏。FastMM在C++ Builder 6中报告STL容器上的内存泄漏
例如,如果我创建了一个std::vector<int>
在main()
:
std::vector<int> v;
编译,运行和关闭,无泄漏报告。
如果我做的:
std::vector<int> v;
v.push_back(100);
我得到:
此应用程序已泄漏的内存。小块泄漏是:
309 - 340字节:未知X 1
类似地,得到了一个泄漏报告:
std::vector<int> v;
v.push_back(100);
v.clear();
,并且也是泄漏报告:
std::vector<int> v;
v.reserve(1);
对于一些容器,如std::deque
,它足以创建一个,甚至不改变其内容泄漏是代表当应用程序关闭时orted。
任何人都可以解释发生了什么?我使用Borland C++ Builder 6和FastMM4。我一直在更改FastMMOptions.inc
中的各种设置,但是我仍然看到这些泄漏报告。
[Borland C++ Builder 6](https://en.wikipedia.org/wiki/C%2B%2BBuilder#Version_history)似乎在2002年出现了....任何机会,你可以使用更多现代编译器?即使是最新版本的C++ Builder?用软件来说,14年已经很长时间了。 – CoryKramer
我这样说,因为给定的代码片段,没有什么会导致内存泄漏(没有看到周围的上下文),除了由编译器错误的“std :: vector”实现。或泄漏检测器报告的误报。 – CoryKramer
是的,我们有Borland XE7,新项目在新环境中开发。不过,我需要调查现有项目中的内存泄漏,由于它们的大小,我们还没有迁移到XE7。我发现FastMM非常有用,但是因为STL在我们代码的很多地方都有使用,所以它指出了非常让我困惑的泄漏。 – bboydushko