socket send函数的奇怪之处
long CMFCWinSockCtrl::SendDataNEW(SOCKET sock,char *data, int dataLength, int timeout)
{
if(!sock)//未与客户端建立连接
return -1;
if(dataLength<0)
return -2;
if(timeout<0)
return -2;
timeval tv;
fd_set fdwrite;
int len = 0;
//送出信息至服务器
FD_ZERO(&fdwrite);
tv.tv_sec = timeout;//指定时间后返回
tv.tv_usec = 0;
FD_SET(sock,&fdwrite);//是否可以发送数据
select(0,NULL,&fdwrite,NULL,&tv);
if(FD_ISSET(sock,&fdwrite))
{
len = send(sock, data, dataLength, 0);//发送数据
if(len<=0)
{
return -101;//无法发送数据,对方可能已断开连接
}
}
else
{
return 0;//网络超时
}
return len;
}
问题是这样的 send(sock, data, dataLength, 0);如果传入的是数据的实际长度 会有内存泄漏
当我把datalength设为1000的时候 就没有内存泄漏了
我自已做了个测试 len=send(sock,"hello,accp",10,0); 会有内存泄漏
len=send(sock,"hello,accp",11,0); 不会有内存泄漏