Windows 指针对象在Visual C++;6
我将粘贴一段代码片段并解释我面临的问题Windows 指针对象在Visual C++;6,windows,visual-c++-6,Windows,Visual C++ 6,我将粘贴一段代码片段并解释我面临的问题 void materialPropertiesDlg::OnNext() { contiBeam *continousBeamPtr; contiBeam contiBeamObj; UpdateData(TRUE); switch (m_steel_grade) { // Do Something } continousBeamPtr->setMaterial(m_conc_gr
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行中创建了一个指针对象,在下一行中创建了一个对象。因此,我调用类contiBeam
的成员函数setMaterials()
。我可以很容易地使用对象contiBeamObj
,但是当我使用contiBeamPointer
调用函数时,windows会抛出一个错误
应用程序已停止工作
我能够做必要的事情,我只想知道可能的原因是什么?您正在使用指针
contiBeam*continousBeamPtr代码>而没有分配它
这是未定义的行为,会使应用程序崩溃
您应该使用new
为指针分配(保留内存),如下所示:
contiBeam *continousBeamPtr = new contiBeam;
然而,最终的问题是,为什么要首先使用指针?你需要一个吗?实际上,我是Visual C++和编程的新手,我通过尝试不同的东西来学习。另外,我想知道使用new
有什么帮助?它的作用是什么?您提供的解决方案不起作用,起作用的语句是contiBeam*continousBeamPtr=new contiBeam代码>@vin对不起,我弄错了。它确实应该是new
后面的类型new
为堆上的对象分配内存,并返回指向该内存的指针。