【发布时间】:2012-09-21 02:20:35
【问题描述】:
我一直在尝试调试程序中的内存泄漏,并将其范围缩小到 WinHttp 通信。我已经能够在以下测试代码中重现该问题:
#include <windows.h>
#include "winhttp.h"
void main() {
while (1) {
HINTERNET send_session = WinHttpOpen(L"asdf", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);
WinHttpCloseHandle(send_session);
}
}
运行几秒钟后,程序已经使用了超过 20MB 的内存。为什么要这样做? The API 声明您需要在不再需要句柄后调用 WinHttpCloseHandle - 我正在这样做。
我在 Arch Linux 上使用 mingw32 进行编译,并在 Windows 7 上运行代码。
【问题讨论】:
-
运行任务管理器,查看进程内存使用情况。
-
它没有向您显示任何足够准确的信息来判断内存泄漏。见stackoverflow.com/questions/1984186/…
-
我刚刚尝试使用 perfmon 来监控进程的私有字节。它报告同样的事情 - 私有字节每秒增加约 1-2MB。
标签: c++ c memory memory-leaks winhttp