设已经有A,B,C,D4个类的定义,程序中A,B,C,D析构函数调用顺序为?
1
2
3
4
5
6
7
8
C c;
void main()
{
    A*pa=new A();
    B b;
    static D d;
    delete pa;
}
析构顺序为:A B D C
这道题主要考察的知识点是 :全局变量,静态局部变量,局部变量空间的堆分配和栈分配

其中全局变量和静态局部变量时从 静态存储区中划分的空间,
二者的区别在于作用域的不同,全局变量作用域大于静态局部变量(只用于声明它的函数中),
而之所以是先释放 D 在释放 C的原因是, 程序中首先调用的是 C的构造函数,然后调用的是 D 的构造函数,析构函数的调用与构造函数的调用顺序刚好相反。
局部变量A 是通过 new 从系统的堆空间中分配的,程序运行结束之后,系统是不会自动回收分配给它的空间的,需要程序员手动调用 delete 来释放。
局部变量 B 对象的空间来自于系统的栈空间,在该方法执行结束就会由系统自动通过调用析构方法将其空间释放。
之所以是 先 A  后 B 是因为,B 是在函数执行到 结尾 "}" 的时候才调用析构函数, 而语句 delete a ; 位于函数结尾 "}" 之前。

全局变量,静态局部变量,局部变量空间的堆分配和栈分配问题相关推荐

  1. linux 进程内存分布及 堆分配和栈分配的特点

    文章目录 进程内存空间分布 size命令查看内存分布 堆方式内存分配和栈方式内存分配比较 使用stap 深入追踪malloc逻辑 进程内存空间分布 一个程序的内存空间主要如下: 代码段(text se ...

  2. c语言中全局变量多线程调用-局部变量、静态局部变量、全局变量与静态全局变量分析

    基本概念: 作用域:起作用的区域,也就是可以工作的范围. 代码块:所谓代码块,就是用{}括起来的一段代码. 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的. ...

  3. Java成员变量(全局变量)和局部变量

    在Java中变量类型有成员变量.局部变量和静态变量(类变量.static变量),本篇文章主要介绍成员变量(全局变量)和局部变量的区别. 根据变量的作用范围,将程序中的变量分为成员变量(全局变量)和局部 ...

  4. pythonclass全局变量_python的局部变量,全局变量,类变量,实例变量

    定义: a.全局变量:在模块内.在所有函数外面.在class外面,这就是全局变量. b.局部变量:在函数内.在class的方法内(未加self修饰的),这就是局部变量. c. 静态变量:在class内 ...

  5. main 函数内的变量是全局变量,还是局部变量?

    main 函数内的变量是全局变量,还是局部变量? (1)main 函数内的变量不是全局变量,而是局部变量 (2)只不过它的生命周期和全局变量一样长而已 (3)全局变量一定是定义在函数外部的

  6. 力扣刷题全局变量WA,局部变量AC的问题

    力扣刷题全局变量WA,局部变量AC问题 题目 原因 题目 golang力扣leetcode 1219.黄金矿工 原因 今天在刷题的时候,遇到一个现象,本地跑测试全部通过,一提交就错错错,非常离谱 然后 ...

  7. 【Python技巧】全局变量global和局部变量local

    全局变量就是放在函数外面的变量 函数内可以直接访问全局变量 函数内定义的变量是局部变量 同名的局部变量会覆盖全局变量 函数内修改全局变量需要用global 全局变量不是真的全局变量,只是在模块内全局变 ...

  8. 栈和堆存储在计算机RAM中,堆内存和栈内存及C++内存分配

    1.现代操作系统内存管理主流的操作系统(Windows,Linux)都采用虚拟内存管理的方式,具体说就是:页式管理.段式管理.段页式管理. 操作系统分配资源的单位是进程,所以,内存管理的过程也是以进程 ...

  9. C C++中关于全局变量静态变量,extern,static,const的区别与总结

    一.extern 1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也 ...

最新文章

  1. 全球及中国汽车维修行业发展战略规划及投资策略建议报告2021-2027年
  2. python实现websocket服务端
  3. triplet loss 在深度学习中主要应用在什么地方?有什么明显的优势?
  4. Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
  5. 【王道计组笔记】高速缓存器:局部性原理及性能分析
  6. [转载] 【python】str与json类型转换
  7. [SOA] Mule ESB 3.x 入门(二)—— 配置(spring, properties, log4j)
  8. 如何下载微信开发者工具?
  9. jenkins教程菜鸟_jenkins新手入门教程
  10. 安卓股票悬浮窗_股票悬浮窗的安卓应用
  11. k8s 集群全部更换机器 IP
  12. UVM中set_drain_time 的使用
  13. 【数模之数据分析-2】
  14. 基于p110δ晶体结构发现一种全新的具有高度选择性的PI3Kδ抑制剂的研究
  15. Ansible inventory文件详解
  16. Fermat theorem (stationary points)
  17. iPhone照片的云端备份和本地移动硬盘备份 策略
  18. Learn Computer Vision-计算机视觉学习
  19. 众享比特参编 | 《Web3.0前瞻研究报告(2022年)》发布及解读,附下载方式
  20. 爬取豆瓣图书排行榜前十并使用图表的形式展示

热门文章

  1. 《SharePoint Portal Server 2003 深入指南》即将完稿 大纲
  2. 线程进程通信和同步方式
  3. 组装电脑配置单报价_怎么选择组装电脑?牢记这四点永不吃亏,第四点最重要...
  4. 【毕业答辩】毕业答辩?你注意过这些细节吗?
  5. win7连接linux系统怎么样,win7系统连接linux的操作方法
  6. mysql脚本执行中文乱码_MySQL从命令行导入SQL脚本时出现中文乱码的解决方法
  7. php preserve keys,PHP常用的数组函数
  8. jqprint 分页打印_JS实现页面打印(整体、局部)
  9. PYTHON1.day07
  10. 2018-06-13 第三十八天