VC6.0和VC2012的全局对象的释放!!!
大家都知道,全局对象的生命周期是整个Process,Process终了时系统回收空间,全局对象的构造是在main()函数之前,析构是在main()函数返回后进行的。今天发现在VC6.0和VC2012中是有区别的。
(1)测试代码:
文件a.h,a.cpp,main.h,main.cpp代码如下
#pragma once
class A
{
public:A();~A();
};
#include <iostream>
#include "a.h"A::A()
{std::cout << "A construct.\n";
}
A::~A()
{std::cout << "A deconstruct.\n";
}
#pragma once
class B : public A
{
public:B();~B();
};
//author:chen_jintao
//注意:includeの使い方、順序#include <iostream>
#include "a.h"
#include "main.h"B::B()
{std::cout << "B construct.\n";
}
B::~B()
{std::cout << "B deconstruct.\n";
}B theB;//全局对象定义
void main()
{std::cout << "main() function is over.\n";return;
}
(2)测试结果:
a)VC6.0中的执行结果:
b)VC2012中执行结果:
(3)结果分析:
从VC6.0的执行结果来看A、B的析构函数没有调用,其实析构函数确实是调用了,这是VC6.0对C++标准库支持的一个bug。这是因为std这个对象在main函数退出后已经释放掉了,所以A、B析构函数的“std::cout<<”没有输出。
大家可以用下面2种方式去确认:
1.直接使用include<iostream.h>代替include<iostream>,调用cout<<。
2.用的C++封装的C的标准库,include<cstdio>或者直接include<stdio.h>,调用printf()。
VC6.0和VC2012的全局对象的释放!!!相关推荐
- 亲密接触VC6.0编译器
亲密接触VC6.0编译器 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解.原因是多方面的.大多数情况下,我们只停留在"使用"它,而不会想去"了解" ...
- VC6.0 转 VS2005
AutoPDMS8.0源码使用高版本ObjectARX(2004/2007)编译的总结 以下是引用uesoft在2007-11-21 15:14:29的发言: 原文作者:杨志军,长沙优易软件开发有限公 ...
- Node.js 全局对象
Node.js 全局对象 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 gl ...
- NodeJS API Process全局对象
Process 全局对象,可以在代码中的任何位置访问此对象,使用process对象可以截获进程的异常.退出等事件,也可以获取进程的当前目录.环境变量.内存占用等信息,还可以执行进程退出.工作目录切换等 ...
- C++对象模型8——构造函数和析构函数中对虚函数的调用、全局对象构造和析构、局部static数组的内存分配
一.构造函数和析构函数中对虚函数的调用 仍然以https://blog.csdn.net/Master_Cui/article/details/109957302中的代码为例 base3构造函数和析构 ...
- 【转】VC6.0附带小工具软件一览
工欲善其事,毕先利其器.今吾将VC6.0下的工具小试一遍,略知其功用,以备不时之需.简略作以总结,欲与众人共飨之. VC6.0附带工具软件: (1)ActiveX Control Test Conta ...
- 30.Node.js 全局对象
转自:http://www.runoob.com/nodejs/nodejs-module-system.html 学习要点: - __filename - __dirname - setTim ...
- 把随机数对象暴露给window成为全局对象 原型及原型链 原型的指向是否可以改变
把随机数对象暴露给window成为全局对象 <!DOCTYPE html> <html lang="en"> <head><meta ch ...
- (转)DirectShow9在VS2005或vc6.0下编译出现问题的解决方法
1.我用的版本是DirectX9.0b ,没有安装,直接解压后放到一个文件夹里用 2.我按照以下的步骤操作成功.明天试着做个播放器. VFW(Video for Windows)是Microsoft推 ...
- Node.js-json-模块化-全局对象-fs-服务-Buffer
Node.js-json-模块化-全局对象-fs-服务-Buffer 1 node基础知识点 1.1介绍 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,是一个 ...
最新文章
- ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!
- Ubuntu图形界面配置开机自启动
- Android AsyncTask源码解读
- unity vr 交互_基于手动的VR / MR交互,用于删除实体
- KETTLE初学者使用教程
- html文件变成巨大,巨大的JavaScript HTML5 blob(从大ArrayBuffers)在客户端构建一个巨大的文件...
- AMD将统治2017年的PC及服务器市场?
- llq考试 圣诞欢乐赛 (第二发)
- 基于Cesium使用自定义着色器的资源总结
- 电子与计算机工程陈晟老师,陈晟老师课堂:数学成绩好,这七个大学专业适合报考!...
- Linux与TPM2芯片
- 数字经济的发展需要包括区块链在内的八大技术的支撑360云储
- 如何使用灰灰美国专利下载软件一键下载美国专利
- 计算机实践教程采莲趣事,计算机基础作业采莲趣事
- 隐写术-PNG文件隐写(一)
- 数据库的分组统计查询
- 基于密度的聚类算法(3)——DPC详解
- 数据分享——EPS数据库-新冠肺炎疫情实时监控平台
- 实达集团任命IT业界知名高管叶成辉为总裁(首席执行官)
- srt字幕解析(上)