我有这样的代码:
char buf[128];
char *data = NULL;
char *temp = NULL;
int full = 0;
int n = 0;
do {
bzero(buf, sizeof(buf));
n = recv(newsock, buf, sizeof(buf), 0);
full += sizeof(buf);
if(n != 0)
temp = realloc(data, sizeof(buf));
if(temp != NULL) {
data = temp;
} else {
// error
}
memcpy(data + (full - sizeof(buf)), buf, sizeof(buf));
printf("%s\n",data);
} while(n > 0);
在这段代码中,我尝试从套接字获取一些数据到缓冲区并将这些数据放入内存中。但我有问题。在 while 循环的第三次迭代中,我收到如下消息:
*** glibc detected *** ./server: realloc(): invalid next size: 0x09a4c008 ***
当我删除 memcpy() 函数时一切正常,但我怎样才能将数据放入内存?怎么了?