int BitWidth=100;
send(ServerSock,(char*)&BitWidth,sizeof(BitWidth)+1,MSG_OOB);
向服务器发送信息的函数,本来,send的第二个参数应该是缓冲区,但BitWidth是一个整型值,所以要进行转化,而上面的形式是可以连接成功的。但第三个参数为什么要加1?不加1就出现内存错误,为什么?
send(ServerSock,(char*)&BitWidth,sizeof(BitWidth)+1,MSG_OOB);
向服务器发送信息的函数,本来,send的第二个参数应该是缓冲区,但BitWidth是一个整型值,所以要进行转化,而上面的形式是可以连接成功的。但第三个参数为什么要加1?不加1就出现内存错误,为什么?
解决方案 »
- 如何可以检测用户在5分钟内没有操作键盘和鼠标,急!!!
- 要编一个多媒体播放器,急需一个ActiveMovieControlObject控件
- <求助> 如何设置屏保~~~~~~急~~~~~~~在线等
- 我刚学C++,怎样学习VC呢?应该看些什么书?
- 关于透明颜色的问题!我对这个比较糊涂
- 如果想读取的字段是空的.十万火急!!!!
- 想做一个软件,模拟电路分析!分不是问题!
- vc小问题(在线等待)
- 难道没人知道com+的问题???
- 用程序控制光标向另一个窗体的某个部位(如其中一个按钮)进行点击需要向那个窗口发哪些消息。
- 如何在内存中建立一个位图文件.并把这个位图放到一个CImageList对象中去?
- 如何在内存中建立一个位图文件.并把这个位图放到一个CImageList对象中去?
而你在send的时候将他转换成了char*,因为char*是以0结尾的字符串,send函数中的+1
就是将缓冲区的大小增加了一个字节,用来存放字符串的结束标志0。如果不加,你的缓冲区
就会溢出,当然出现内存错误了!
跟缓冲区的大小没有关系
我还是那句话,你到底出错出在哪句上,我想send函数是不会出错的。
说的很对我开始想了想,未果!!他的解释应该是对的!!
MSG msg;send(ServerSock,(char*)&msg,sizeof(MSG),0);是有多少发多少
估计是第4个参数MSG_OOB或者其他异常地方导致,与强制转换没有关系