我有一个简单的C ++服务,它从文件中读取文本并通过网络发送。随着时间的推移,此服务的内存消耗在客户站点上增加。在QA测试中没有观察到这种行为。
我想知道是否可以在任何给定时间提取内存中的所有字符串对象。
是否可以自动执行此过程,以便我在不同时间从客户处获取转储,并在每次查找内存的大小或内容并比较结果。
答案 0 :(得分:3)
对于c ++,答案是否定的(在C#中是另一回事)。在c ++世界中,如果您怀疑自己有泄漏,则需要在“泄漏”发生之前在进程上启用usermode堆栈跟踪(在gflags.exe中为+ ust)。泄漏发生后,获取进程的转储并检查它。要检查它(我假设您在此响应中使用本机Windows堆),您将需要遍历堆结构以找出分配的位置,然后检查堆栈回溯以获取最常见分配大小的样本
实施例
答案 1 :(得分:1)
听起来你有内存泄漏。我只使用windbg来调试托管应用程序。也许这个Link可以帮助你一点。
答案 2 :(得分:1)