**已关闭。**此问题需要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)
代码库相当大,所以很难给出一个最小的运行示例。然而,调试器一直在突出显示析构函数代码行。我的问题任何提示,我应该在代码中仔细检查。
1条答案
按热度按时间2ledvvac1#
我昨天遇到了这个问题,从析构函数抛出了
free
。这与析构函数无关,这是一个越界访问,索引变量,乍一看,看起来像是不能越界。用
.at()
替换任何方括号访问,看看是否会出现越界异常。然后就可以解决这个问题了。