-1
私はこのベクトル持っている:私はnew
に割り当てられたサイズsize x size
と2Dマトリックスと、このベクトルを埋める2D配列のベクトルを削除
std::vector<int**> vec;
を(私はベクトルに保存された行列の値をチェックし、彼らがしています正しい)
matrix = new int*[size];
for (int i = 0; i < size; ++i)
matrix[i] = new int[size];
/*here I add some values to the array and save it to the vector
*
*
*/
vec.push_back(matrix);
/* this I do with several matrices
次にベクトル内の行列を削除し、ベクトルをゼロ長さに消去します。
for (int i = 0; i < vec.size(); ++i){
for (int j = 0; j < size; ++j){
delete[] vec[i][j];
delete[] vec[i];
}
}
if (vec.size() > 0)
vec.erase(vec.begin(), vec.end());
このエラーが削除原因:
double free or corruption (fasttop):
私のコードで何が悪いのでしょうか?
私はごめんなさい 'vec'に' boardMatrices'を変更するのを忘れ、私はまだそれを編集しました。あなたが見ることができるように、私は新しいものとして何度も削除を呼び出すと思います。私はベクトルの代わりに配列を使う必要があります。 –
'vector>>'を使うことができます。あるいは、Eigenのような行列ライブラリを使うこともできます。 –
sietschie