WSACleanup会导致内存泄漏么
- C/C++ code
SOCKET MySocket; WSADATA wsaDATA; WSAStartup(MAKEWORD(2,2),&wsaDATA); if ( LOBYTE( wsaDATA.wVersion ) != 2 || HIBYTE( wsaDATA.wVersion ) != 2 ) { AfxMessageBox("失败"); } MySocket =socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); closesocket(MySocket); WSACleanup();
循环调用以上代码的时候会发现 内存无限增大
经过测试问题出在 WSACleanup() 这个函数上,注释掉它,就没有任何问题了,怎么回事,请有经验的说说
[解决办法]
循环调用以上代码,会频繁的加在DLL,又马上卸载DLL,开销很大
[解决办法]
WSACleanup()会终止所有操作然后卸载DLL。
而DLL被卸载后映像内存不一定立即被释放。
下次又加载到不同的内存地址,如此反复