gpt4 book ai didi

c - realloc:下一个大小无效;内存复制

转载 作者:行者123 更新时间:2023-11-30 18:57:52 26 4
gpt4 key购买 nike

我有这样的代码:

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() 函数时一切正常,但如何将数据放入内存?怎么了?

最佳答案

问题在于您不断添加数据,但没有扩展其内存。线路

temp = realloc(data, sizeof(buf));

总是分配128字节。您需要更新它在每次迭代中都会分配更多。也许您打算这样做:

temp = realloc(data, full);

关于c - realloc:下一个大小无效;内存复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18966478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com