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

时间:2015-07-23 23:14:05

标签: c++ class pointers

我正在进行物理模拟,我有两个课程,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);,如果删除它, 没有错误。没有关于如何解决它的想法?

1 个答案:

答案 0 :(得分:0)

我自己修复了这个问题。双删除问题。当我要删除它时,模拟已经删除了。 我只是去了delete sim