动态实例化一个类,然后立即删除它?

时间:2012-06-22 16:08:11

标签: c++ pointers memory-management

我创建了自己的类,但是当我尝试实例化它时,我碰到了一堵墙。

这是我的代码:

m_interpolation = new Interpolation(m_mesureList, width, height, parent);
delete m_interpolation;

哪会产生错误:

  

0B3E9E40的堆块在0B3E9E68修改为超过要求的大小20

我看不出我做错了什么......

有关此信息,请参阅我的课程Interpolation.hInterpolation.cpp的完整定义,如果有任何帮助的话。

添加了析构函数,但仍未解决问题。

Interpolation::~Interpolation()
{
    delete m_progress;
    m_progress = 0;
}

2 个答案:

答案 0 :(得分:4)

在ctor中: 填充m_w:最多(m_N-1)

for (int i(0); i < m_N; ++i)
{
    m_pt.push_back(QPointF(mesureList[i]->getX(), mesureList[i]->getY()));
    m_w.push_back(mesureList[i]->getAngle());
}

稍后:访问m_w[m_N],超出了向量的末尾

for (i = m_N; i >= 0; --i)
{
    sum = m_w[i];
    for (j = i+1; j < m_N; j++) sum -= LU[i][j]*m_w[j];
    m_w[i] = sum / LU[i][i];
}

答案 1 :(得分:0)

构造函数Interpolation :: Interopolation()或析构函数Interpolation :: ~Interpolation()内部的东西超出了对象的大小。