Pointer对象在Visual C ++ 6.0中创建一个Windows错误

时间:2012-09-10 12:56:47

标签: windows vc6

我将粘贴代码段并解释我面临的问题,

void materialPropertiesDlg::OnNext() {
    contiBeam *continousBeamPtr;
    contiBeam contiBeamObj;
    UpdateData(TRUE);
    switch (m_steel_grade) {
        // Do Something
    }   
    continousBeamPtr->setMaterial(m_conc_grade, m_steel_grade);
    OnOK();
}

如您所见,在第2行中创建了一个指针对象,在下一行中创建了一个对象。所以,然后我调用类setMaterials()的成员函数contiBeam。我可以使用对象contiBeamObj轻松完成此操作,但是当我使用contiBeamPointer调用该函数时,窗口会抛出一个错误,其中包含

  

应用程序已停止工作。

我能够做到这一点,我只是想知道可能的原因是什么?

1 个答案:

答案 0 :(得分:0)

您正在使用指针contiBeam *continousBeamPtr;而未分配它。

未定义的行为会使您的应用程序崩溃。

您应该使用new为您的指针分配(保留内存),如下所示:

 contiBeam *continousBeamPtr = new contiBeam;

然而,最终的问题是,为什么你首先使用指针?你需要一个吗?从您发布的代码中看起来不像。