指针对象在 Visual C++ 6.0 中创建 windows 错误
Posted
技术标签:
【中文标题】指针对象在 Visual C++ 6.0 中创建 windows 错误【英文标题】:Pointer object Creates a windows error in Visual C++ 6.0 【发布时间】:2012-09-10 12:56:47 【问题描述】:我将粘贴一个代码sn-p并解释我面临的问题,
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 会抛出一个错误,显示为
应用程序已停止工作。
我能够做必要的事情,我只是想知道这可能是什么原因?
【问题讨论】:
【参考方案1】:您正在使用您的指针contiBeam *continousBeamPtr;
而没有分配它。
那是未定义的行为,会使您的应用程序崩溃。
您应该使用new
分配(保留内存)您的指针,如下所示:
contiBeam *continousBeamPtr = new contiBeam;
然而,最终的问题是,为什么你首先要使用指针?你需要一个吗?从您发布的代码看起来不像。
【讨论】:
实际上,我是 Visual C++ 和编程的新手,我通过尝试不同的东西来学习。另外,我想知道使用new
有什么帮助?它的作用是什么?
您提供的解决方案不起作用,起作用的语句是contiBeam *continousBeamPtr = new contiBeam;
@vin 对不起,我的错误。它确实应该是new
之后的类型。 new
为堆上的对象分配内存并返回指向该内存的指针。以上是关于指针对象在 Visual C++ 6.0 中创建 windows 错误的主要内容,如果未能解决你的问题,请参考以下文章
在 ActiveX dll 项目中创建列表(对象),在 Visual Basic 6.0 中用于 c# 项目
如何在visual studio2008中创建,编译和运行C++程序,