【发布时间】:2016-02-16 20:44:20
【问题描述】:
我正在尝试在 C++ 中添加指向向量的指针。因此:
Puzzle * puzzleStart = new Puzzle();
std::vector<Puzzle*> OPEN;
OPEN.push_back(puzzleStart);
第一次推送指针,没有问题。第二次,它会导致崩溃。我猜问题是向量的大小,但我不明白为什么。还有什么其他的吗?
更新:你是对的,问题出在其他地方,我刚刚意识到它发生在我释放指针向量时。还有另一个问题,如果向量包含重复的指针,我认为。
if (OPEN.size()!=0){
for (int i = 0; i < OPEN.size(); ++i) {
delete OPEN[i]; // Calls ~object and deallocates *tmp[i]
}
OPEN.clear();
}
我如何确保它不会尝试擦除所有已删除的指针?
【问题讨论】:
-
向指针向量添加一个简单的指针不会使程序崩溃。发布带有错误消息的崩溃并添加代码,直到发生第二次崩溃。也许你不应该做一些矢量操作?您问题中的当前代码没有任何问题(尽管您可能希望使用智能指针,如果可能的话)。
标签: c++ pointers vector crash push-back