我在下面的代码中遇到了分段错误。你能帮我弄清楚吗?在下面的代码中,它打印出“OK here”。一旦它释放内存,它就会显示分段错误。但为什么 ?任何解决方案指向矢量的指针:正在获取分段错误
任何帮助,将不胜感激。
#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;
}
};
void foo(vector <Cube> *vec)
{
for (int i = 0; i < 10; i++)
{
char in [] = "hello !!";
Cube *c = new Cube(strlen(in)+1);
strcpy(c->str, in);
vec->push_back(*c);
cout << "ok here" << endl;
delete [] c;
}
}
int main()
{
vector <Cube> vec;
foo(&vec);
return 0;
}
如果您使用'new []''您必须使用'delete []' –
您是否尝试过使用gdb来查找失败的行?看起来像问题是你删除[] - 当它是一个char *的str变量。 – Suroot