定义函数: void *memcpy(void *dest, const void *src, size_t n)
函数说明: memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。
有个疑问,如果memcpy()调用2次,那么第二次拷贝的内容是追加的还是覆盖的?
=========================================
我用socket传文件,socket缓冲区是有大小限制的,假设缓冲区是1K,那么调用sockClient.Receive(data, 1M)也只能收到前1K数据。接收的时候用循环
......
int dataLength;// 要接收文件的长度
sockClient.Receive(&dataLength, 4);// 接收文件的长度信息
byte *data = new byte[dataLength];//存放接收的文件
....
while (1)
{
byte *t= new byte[0x1000];//循环一次接收的数据
int n = sockClient.Receive(t, 0x1000);
if (n == 0)
{
break; //接收完毕退出
}
memcpy(data, t, n);//把收到的数据写入data
}
这样为什么不行,哪里出问题?要怎么样把循环接收的所有数据都追加到data?
发送小的图片没问题,大的图片就出问题,如图,而且接收程序出错退出,什么原因呢?
给data分配的存储空间不够吗?现在data的大小已经是和发送的文件大小一致的了,奇怪了
MYYA
拉丁的传说