关闭已经投递WSARecv的套接字会造成内存泄露吗?

亚细亚 2019-05-15 04:11:18
WSAOVERLAPPED ovl=(WSAOVERLAPPED *)calloc(1, sizeof(WSAOVERLAPPED));
已经投递:
WSARecv(s, &wsabuf, 1, NULL, &flags, ovl, NULL)到该套接字(s),
1.这时候如果closeSocket(s)的话,会不会造成分配的ovl内存泄露?
2.如果要closeSocket(s),那么是否需要取消已经投递的WSARecv,如果要取消,如何取消WSARecv?
...全文
140 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2019-05-17
  • 打赏
  • 举报
回复
你malloc了,肯定是需要调用free来释放的~
zgl7903 2019-05-16
  • 打赏
  • 举报
回复
calloc 的内存 必须有对应的 free 啊, 和 overlaped 有什么关系?
亚细亚 2019-05-16
  • 打赏
  • 举报
回复
如果直接closeSocket(s)的话,那么calloc分配的空间ovl不需要free(ovl)吗?
zgl7903 2019-05-16
  • 打赏
  • 举报
回复
closesocket 的说明 Any pending overlapped send and receive operations ( WSASend/ WSASendTo/ WSARecv/ WSARecvFrom with an overlapped socket) issued by any thread in this process are also canceled. Any event, completion routine, or completion port action specified for these overlapped operations is performed. The pending overlapped operations fail with the error status WSA_OPERATION_ABORTED. 所以不用特意取消

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧