私はこの機能を持っているを使用して、その目的は、私はエラーを取得していますなぜSTD関数消去::ベクトル
//children is vector of type vector<BaseFile*>
void Directory::removeFile(BaseFile* file)
{
for(int i = 0 ; (unsigned)i < children.size() ; i++)
{
if ((children[i]->getName()).compare(file->getName()) == 0)
{
BaseFile* a = children[i];
children.erase(children.begin()+i);
if(a != nullptr)
{
delete a;//err in this line : double free or corruption
}
}
}
}
最初の質問は、子供と呼ばれるベクトルからクラスBASEFILE のポインタを削除することです行(削除a;)? 用量を消去すると、それを削除するポインタが削除されますか? もしそうなら、私はどのようにHeap/Stackの中のコンテンツを削除せずにベクトルからポインタを削除できますか?
cppreferenceの[のstd ::ベクトルページの「メンバ関数」セクションを参照してください。 com](http://en.cppreference.com/w/cpp/container/vector)。あなたが何か他のものが必要なのかどうか私たちにお知らせください。 – Drop
1回の繰り返しで複数のアイテムを消去したい場合、このコードには欠陥があります。残りの人は確かにドキュメントを読んでください – Laurijssen
私は私に何をするように頼まれたのか分かりません!!! –