我在下面的代碼中遇到了分段錯誤。你能幫我弄清楚嗎?在下面的代碼中,它打印出「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