我的Visual Studio 2017 C ++ Windows项目使用的内存在运行期间稳定增加。
但是,当我检查内存泄漏时,没有报告。
这是我用来检查内存泄漏的内容:
为确保上述方法切实可行,我还创建了一些强制内存泄漏,已正确报告。
总而言之,我的代码中没有泄漏的分配报告,并且关于这些泄漏,我没有任何有用的信息,例如模块,源文件或堆栈跟踪。
该exe所使用的一个或多个dll可能在其创建的线程中运行了代码泄漏,或者可能使用了某种缓存,但是我没有确凿的证据。
关于如何继续确定导致这些泄漏的原因的任何想法?
说明:我没有发布代码,因为我需要发布整个应用程序,这是不可能的。我不能在一个小项目中复制它。
我不需要代码本身的帮助,我非常有信心那里没有泄漏。我需要寻找一种工具或其他方法来检测对常规方法无效的内存问题,需要帮助。
答案 0 :(得分:0)
好吧,很难给出确切的答案。 可能要寻找的东西:
global
和new
,通常您可以使用智能ptrs来避免使用它们delete
来避免new[]
和delete[]
std::vector
使其保持生命(检查lambda捕获)=>通常,shared_ptr
是非所有者的更好选择weak_ptr
的{{1}},最好完全避免。 malloc
和free
有一个陷阱,尤其是在处理较大的对象时。如果通过make_shared
创建对象,则该对象的存储空间和指针的控制块将一步分配。结果,即使在对象被销毁后,也只有在最小的weak_ptr
被销毁后,内存才可用。在这种情况下,一切似乎都很好,没有工具可以检测到问题,并且在应用程序退出时不会泄漏。