析构函数在应用程序出口处重新运行
Destructor is re-running at Application exit
我有一个类:说" InterClass
"。这个类在MainClass
中声明为:
在MainClass.h
:
public:
InterClass *m_pInterClass;
在主类的构造函数中:
m_pInterClass = new InterClass(this);
我想在InterClass中使用MainClass的一些函数,所以在构造函数中传递this
。我将其分配给一个全局指针,并在课堂上的任何地方使用它。
在main()
一切都很好,直到它到达终点。
我的代码的最后一行是:
delete MainClass;
OutputDebugString("Exiting Application");
return 0;
我的应用程序在" return 0
"崩溃我把 OutputDebugString() 放在代码中的任何位置。我缩小的是:在调试视图上- 我可以看到"类间"的析构函数被执行,然后"退出应用程序",然后再次执行"类间"的析构函数。我很困惑为什么 InterClass 的析构函数被执行两次?那在return 0;
由于此应用程序的性质,我无法在此应用程序中放置断点。
附言我是一名嵌入式C程序员,对C++完全陌生(被迫从事PC应用程序:(工作)
显然,这闻起来像是不遵守三法则。
类 Copy 构造函数和 Copy 赋值运算符应执行动态分配的成员指针的深层复制。如果没有,那么您一定会看到您得到的行为。
无论哪种方式,都应避免使用原始指针成员。你最好把它包裹在一个智能指针中。
相关文章:
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 我可以在运行时重新定义在 OpenCascade/OCCT 标头中定义的 c++ 静态常量吗?
- 如何使用 ctypes 停止和重新启动从 Python 运行的C++代码
- 重新运行程序和字符串流?
- 重新启动后,线程无法在 while 循环中再次运行
- 运行时检查失败 #0 用于运行时重新编译
- 我想重新运行一个线程
- 代码在CodeBlocks中运行良好,但是当我将其上传到Google Kickstart竞赛时,我会得到一个重新播放
- 根据用户输入或条件重新运行 c++ 程序
- C++/Qt项目中的连接功能中不存在插槽?(已经重新运行了制作)
- CMAKE重新运行由于CUDA生成的文件
- 正在重新运行我的主方法
- 重新运行程序时EXC_BAD_ACCESS
- 析构函数在应用程序出口处重新运行
- 请求用户输入以便重新运行程序或退出
- 如何创建无需重新运行即可获得新结果的程序?
- 如何(不)重新运行c++代码
- 如何强制重新运行cmake,或通过CMakeLists.txt添加功能到makefile
- Visual Studio 2012 LNK1168每次我重新运行项目
- 我将如何提示用户为他们提供在C++中重新运行程序的选项