我一直在尝试调试程序中的内存泄漏问题,并将其缩小到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的内存。这是为什么?API指出,在句柄不再需要时需要调用WinHttpCloseHandle - 我已经这样做了。 我是在Arch Linux上使用mingw32编译的,并在Windows 7上运行代码。