全局的类为什么不会调用析构函数呢?

问题描述

全局的类为什么不会调用析构函数呢?
从图中c1c2是全局变量,最后的运行结果中并没有调用析构函数释放,这是为什么呢

解决方案

全局类会调用析构函数,但是你在控制台看不到输出,这是因为调用的时机,此时程序已经和控制台分离了。
为了证明它的确被执行了,你可以下一个断点,调试执行,那么会看到程序确实停在了析构函数上。

解决方案二:
析构函数什么时候会调用?
为什么会两次调用析构函数

时间: 2024-09-13 11:45:22

全局的类为什么不会调用析构函数呢?的相关文章

两次调用析构函数

在类生成临时对象时,遇到一个问题,程序会两次调用析构函数 #include <cstring> #include <iostream> using namespace std; class stack { public: stack(const char *value); ~stack(); char * data; }; stack::stack(const char *value) { if(value) { data = new char[strlen(value)+1];

warning C4150: 删除指向不完整“XXX”类型的指针;没有调用析构函数

  情况源于我的之前一片博客<C++ 智能指针>,在我写demo代码的时候.   向前申明了class Phone, 然后再U_ptr类析构函数中delete Phone的指针. 出现warning C4150: 删除指向不完整"XXX"类型的指针:没有调用析构函数     这个waring会导致内存泄露.前向申明的类的析构函数没有被调用     出现warning的代码如下:   #include <iostream> using namespace std;

php-PHP 一个类里能直接调用类外部的函数吗?为什么

问题描述 PHP 一个类里能直接调用类外部的函数吗?为什么 PHP 一个类里能直接调用类外部的函数吗? PHP 一个类里能直接调用类外部的函数吗? PHP 一个类里能直接调用类外部的函数吗? PHP 一个类里能直接调用类外部的函数吗? PHP 一个类里能直接调用类外部的函数吗? 解决方案 在实验的时候发现是可以的,代码如下 <?php function func(){ echo "I'm a external function <br />"; } class Tes

Struts2中,使用全局转换器时,始终不能调用convertToString方法,而使用局部转换器则正常,不知为何?

问题描述 我使用的是:struts-2.3.4.1在使用全局转换器时,始终不能调用convertToString方法,而使用局部转换器则该方法正常执行相关代码如下:PointAction2类:publicclassPointAction2extendsActionSupport{privateList<Point>point;privateintage;privateStringusername;privateDatebirthday;publicList<Point>getPoi

关于c++显示调用析构函数的陷阱

一.文章来由 现在在写一个项目,需要用到多叉树存储结构,但是在某个时候,我需要销毁这棵树,这意味着如果我新建了一个树对象,我很可能在某处希望将这个对象的声明周期终结,自然会想到显示调用析构函数,但是就扯出来这么大个陷阱. 二.原因 在了解为什么不要轻易显示调用析构函数之前,先来看看预备知识. 为了理解这个问题,我们必须首先弄明白"堆"和"栈"的概念. 1)堆区(heap) -- 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收.注意它与数据结构中的堆

C++聚合关系类的构造函数的调用顺序详解_C 语言

如图,表示一个聚合关系 下面就用简单的代码来实现 #pragma once class Engine { public: Engine(); ~Engine(); }; Engine.h #include <iostream> #include "Engine.h" using namespace std; Engine::Engine() { cout << "调用构造函数:Engine()" << endl; } Engine

基类和子类的调用顺序(C#,java)

现在关于oo的编程思想已经越来越被大家接受,但是大家对一些基础化的东西不是很熟悉,比如基类和子类的调用顺序.在这里我以c#为例给大家讲解一下对于一个下面一段代码 public class baseClass { public string a="baseClass" ; public baseClass() { a="初始化baseClass"; } } public class ExtendClass:baseClass { private string b=&q

ios-在全局队列中的timer没有调用

问题描述 在全局队列中的timer没有调用 -(void)viewDidLoad{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [NSTimer scheduledTimerWithTimeInterval:0.10 target:self selector:@selector(action_Timer) userInfo:nil repeats:YES]; } ); } -(v

编程-为什么派生类的指针指向基类对象 还可以调用派生类的函数?

问题描述 为什么派生类的指针指向基类对象 还可以调用派生类的函数? 想不明白啊,高手帮帮忙吧 Derived1 * hh = static_cast(new Base); hh->derivedfunction(); // 这里竟然是可以的 为什么呢 hh指向的是一个基类对象啊?? 而且即使derivedfunction里面用到派生类的私有成员也是可以的, 这到底是为什么啊??? 解决方案 虽然语法上让你通过了,static_cast是强制类型转换,所以语法没办法阻止你错误的做法,但是实际运行结