私は自分のプログラムでメモリ リークをデバッグしようとしており、それを 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 でコードを実行しています。