gpt4 book ai didi

C++ 错误 : double free or corruption (fasttop)

转载 作者:太空狗 更新时间:2023-10-29 19:38:51 24 4
gpt4 key购买 nike

我想知道为什么下面的程序在运行时会出现“double free or corruption (fasttop)”的错误。我知道我可以使用字符串而不是字符数组。但我想使用具有动态内存分配的字符数组。你能告诉我如何解决这个问题吗?

#include <iostream>
#include <cstring>
#include <vector>
using namespace std;

class Cube
{
public:
char *str;

Cube(int len)
{
str = new char[len+1];
}

Cube(const Cube &c)
{
str = new char[strlen(c.str) + 1];
strcpy(str, c.str);
}
~Cube()
{
delete [] str;
}
};

int main()
{
vector <Cube> vec;

for (int i = 0; i < 10; i++)
{
char in [] = "hello !!";
Cube c(strlen(in)+1);
strcpy(c.str, in);
vec.push_back(c);
}

int i = 0;
for ( vector<Cube>::iterator it = vec.begin(); it < vec.end(); )
{
cout << it->str << endl;
i++;
if (i % 2 == 0)
it = vec.erase(it);
else
it++;
}


for ( vector<Cube>::iterator it = vec.begin(); it < vec.end(); it++)
{
cout << it->str << endl;
}
return 0;
}

最佳答案

您忘记为您的类定义 operator=。这就是三巨头的规则(copy ctor, dtor, assignment 都必须定义)。

关于C++ 错误 : double free or corruption (fasttop),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6435404/

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