gpt4 book ai didi

C++ : Double free or corruption (out)

转载 作者:行者123 更新时间:2023-11-30 03:45:53 28 4
gpt4 key购买 nike

我遇到了这个错误

*** Error in `./main': double free or corruption (out): 0x000000000095c8a0 ***
  • getPieces()定义为 vector<Piece*> Position::getPieces()
  • getSymbol()返回 int

我想要实现的是从 vector 中删除 Piece与变量 Pointer* 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;
}

最佳答案

如所写,getPieces() 返回 vector 的拷贝。每次调用 getPieces() 时,它都是不同的拷贝。您尝试使用来自另一个 vector 的迭代器从一个 vector 中删除元素,难怪出现问题。无论如何,您尝试修改一个拷贝,该拷贝将在您离开该功能时(甚至更早)被销毁。

如果 getPiecesPosition 返回内部字段拷贝的方法(例如,m_vector),请使用 m_vectorremovePiece() 而不是 getPieces 调用中。

关于C++ : Double free or corruption (out),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34453694/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com