gpt4 book ai didi

c++ - glibc 检测到 free() invalid size (fast) 错误?

转载 作者:行者123 更新时间:2023-11-28 07:21:37 26 4
gpt4 key购买 nike

当我执行以下函数时出现此错误,我不知道它是什么意思。这是函数:

void readf2()
{
std::ifstream inFile("f2",std::ios_base::binary);
std::string str(2, '\0');
int i = 0;
while(inFile.read(&str[i],2)){
cout<<"Success: ["<< i << "] = "<< (int)str[i]; ;
cout<<"\n";
i++;
}
}

该函数工作了一段时间,将各种数字写入控制台,然后由于此错误、回溯和内存映射而崩溃。发生这种情况是因为我正在释放一个不存在的内存地址吗?

最佳答案

您很可能给出 read调用指向不属于您的内存的指针。

str[i]返回字符串中的偏移量,但它不能保证您有足够的内存来读取该位置 (+2)。

您的意思可能是拥有一个 int 数组,并使用 i 作为其索引:

void readf2()
{
std::ifstream inFile("f2",std::ios_base::binary);
std::vector< int > str; // if you're reading int's - use int, not string
int i = 0;
int j;
while(inFile.read(&j,sizeof(int))){ // check what the content is here
str.push_back(j);
cout<<"Success: ["<< i << "] = "<< str[i];
cout<<"\n";
i++;
}
}

关于c++ - glibc 检测到 free() invalid size (fast) 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19370922/

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