gpt4 book ai didi

c++ - 双重释放或内存损坏

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:39 26 4
gpt4 key购买 nike

我有这样的代码

char *verboseBuf = NULL;
if(somethin){
for(a loop){
for(another loop){
if(somethin else){
if(curl execution){
if(fail){
verboseBuf = (char *) malloc(sizeof(char) * (currSize +1));
fread(verboseBuf, 1, currSize, verboseFd);
verboseBuf[currSize + 1] = '\0';
string verbose = verboseBuf;
free(verboseBuf);
}
}
}
}
}
}

我唯一使用 verboseBuf 的地方是在最后的 if 循环中。但我明白了

*** glibc detected *** ./test: double free or corruption (!prev): 0x13c13290 ***

但是如果我只在一个地方使用它怎么能释放它两次呢?每次我使用它时,我都会释放它。我尝试使用 addr2line 找到它之前被释放的地方,但得到的只是一个 ??:0

最佳答案

这一行是在缓冲区末尾后写入一个字节。

verboseBuf[currSize + 1] = '\0';

关于c++ - 双重释放或内存损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9324544/

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