调试断言失败!表达式:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse) 在程序中结束

Debug Assertion Failed! Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) In program ended

本文关键字:nBlockUse gt 结束 程序 pHead- VALID 表达式 失败 断言 BLOCK 调试      更新时间:2023-10-16

我做一个物理模拟,我有两个类,SimulationRenderer。我需要让它们相互引用,问题是,当我通过引用Renderer时发生这种情况

代码如下:

Renderer.cpp
Renderer::Renderer(Simulation* _sim) {
    sim = new Simulation(*_sim);
}
Renderer::~Renderer() {
    delete sim;
}
Renderer.hpp
class Renderer {
private:
    Simulation* sim;
public:
    Renderer(Simulation* _sim);
    ~Renderer();
};
编辑:

这是请求的代码(我唯一要做的就是绘制它):

Renderer.cpp
void Renderer::Draw() {
    for(auto obj : sim->objects) {
        glBegin(GL_POINTS);
        for(auto p : obj) {
            glColor3f(COLORS[p.id][0], COLORS[p.id][1], COLORS[p.id][2]);
            glVertex2f(p.x,p.y);
        }
        glEnd();
    }
}

错误来自sim = new Simulation(*_sim);,如果我删除它,没有错误。不知道怎么解决?

自己修复了这个问题。双重删除问题。当我要删除模拟程序的时候它已经自我删除了。我刚刚删除了delete sim