gpt4 book ai didi

C malloc 增加缓冲区大小

转载 作者:太空宇宙 更新时间:2023-11-04 07:42:28 25 4
gpt4 key购买 nike

这是我读取 http 响应的代码的一部分。如果空间不足,它应该增加缓冲区大小。但我不断收到访问冲突。将数据复制到新缓冲区时会发生这种情况:memcpy(tmp_alloc, rec, ResponseLength);欢迎提供任何帮助/建议。

#define SERVER_CHUNK 1024

char *rec = new char[10000];
char in_buff[SERVER_CHUNK];
int in_sz,
ResponseLength = 0,
rec_len = 10000;

in_sz = recv(ss,in_buff,SERVER_CHUNK,0);//get the response

while(in_sz > 0)
{

memcpy(rec + ResponseLength,in_buff,in_sz);
ResponseLength += in_sz;

if((ResponseLength + SERVER_CHUNK) > rec_len)
{
char *tmp_alloc = (char*) malloc (ResponseLength + SERVER_CHUNK);
if(!tmp_alloc)
{
printf("failed to alocate memory!\n");
break;
}
memcpy(tmp_alloc, rec, ResponseLength);
free(rec);
rec = tmp_alloc;
rec_len = ResponseLength + SERVER_CHUNK;
}

in_sz = recv(ss,in_buff,SERVER_CHUNK,0);
}

最佳答案

您可能会通过将 new[] 与 free() 混合使用来破坏堆,这是不受支持的。

改变:

char *rec = new char[10000];

收件人:

char *rec = (char*) malloc( 10000);

看看它是否有任何不同。

关于C malloc 增加缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413189/

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