c++ 损坏的大小与以前的大小[已关闭]

vhmi4jdf  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(203)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
4天前关闭。
Improve this question
我有一个类A,B和C(代码片段说明下面的设计)。

class A{
 public:
     A() = default;
     // some virtual functions
     virtual ~A() = default;

 private:
     // variables; no pointers
}

class B: public A{
  public:
  ~B() = default;

  protected:
     //variables
}

class C: public A{

protected:
   std::vector<std::unique_ptr<A>> cs;
   // other variables

public:
 ~ C() = default;

}

在代码中,我有一个vector<std::unique_ptr<A>>的,我把元素推到上面并应用resize。问题是当我运行程序时,我经常得到下面的错误。

corrupted size vs. prev_size
Signal: SIGABRT (Aborted)

代码库相当大,所以很难给出一个最小的运行示例。然而,调试器一直在突出显示析构函数代码行。我的问题任何提示,我应该在代码中仔细检查。

2ledvvac

2ledvvac1#

我昨天遇到了这个问题,从析构函数抛出了free。这与析构函数无关,这是一个越界访问,索引变量,乍一看,看起来像是不能越界。
.at()替换任何方括号访问,看看是否会出现越界异常。然后就可以解决这个问题了。

相关问题