【发布时间】:2015-12-24 13:39:54
【问题描述】:
我收到了这个错误
*** Error in `./main': double free or corruption (out): 0x000000000095c8a0 ***
-
getPieces()定义为vector<Piece*> Position::getPieces() -
getSymbol()返回int
我想要实现的是从向量中删除与变量Pointer* piece 相同的Piece 指针。
int Position::removePiece(Piece* piece) {
for (size_t i = 0; i < getPieces().size(); i++) {
if (getPieces()[i] == piece) {
getPieces().erase(getPieces().begin() + i); // errors happens here
std::cout << getPieces().size() << std::endl;
return getSymbol();
}
}
return -1;
}
【问题讨论】:
-
您使用的是什么编译器和操作系统版本?
-
@itsols Archlinux 和 g++
-
@KerrekSB 不,OP 在这里只使用一次迭代器。问题是,一个向量的迭代器用于修改另一个向量(可以预见的是失败)。
-
@Abstraction:好的,很公平。您最终仍会跳过元素,这可能会导致不良行为。
标签: c++ memory segmentation-fault