c++ - 指针 vector 的 Push_back 方法导致 C++ 崩溃

标签 c++ pointers vector crash push-back

我正在尝试在 C++ 中添加指向 vector 的指针。因此:

          Puzzle * puzzleStart = new Puzzle();

          std::vector<Puzzle*> OPEN;

          OPEN.push_back(puzzleStart);

第一次压入指针时,没有问题。第二次,它会导致崩溃。我猜问题是 vector 的大小,但我不明白为什么。还有什么更多的事情吗?

更新:你是对的,问题出在其他地方,我刚刚意识到它是在我释放指针 vector 时发生的。还有另一个问题,如果 vector 包含重复的指针,我认为。

   if (OPEN.size()!=0){
       for (int i = 0; i < OPEN.size(); ++i) {
      delete OPEN[i]; // Calls ~object and deallocates *tmp[i]
       }
      OPEN.clear();
       } 

我如何确保它不会尝试删除所有已删除的指针?

最佳答案

你是对的,问题出在其他地方,我刚刚意识到它是在我释放指针 vector 时发生的。还有另一个问题,如果 vector 包含重复的指针,我认为。

       if (OPEN.size()!=0){
           for (int i = 0; i < OPEN.size(); ++i) {
          delete OPEN[i]; // Calls ~object and deallocates *tmp[i]
           }
          OPEN.clear();
           } 

我如何确保它不会尝试删除所有已删除的指针?

关于c++ - 指针 vector 的 Push_back 方法导致 C++ 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442600/

相关文章:

c++ - 使用 boost::asio 和 strands 的事件队列:WAITING新事件

c++ - C中的同步写操作

c++ - VTK:定位和缩放多架飞机

c - 指针和双指针练习

.net - 如何在 C++ 上从 CLR 捕获事件

c - 如何从堆内存数组 INSIDE STRUCT 写入?

c++ - C++使用参数返回指针-不同指针类型之间的比较缺少强制转换

c++ - 在 std::vector 上运行的多个线程:在这种情况下我需要锁吗?

c++ - 每次我输入长度为 4 的字符串时,下面的 cpp 代码都会崩溃(vector 中的 malloc 失败)

c++ - 使用 vector 控制显示输出