C++中变量,函数的作用域和生命周期?

本文深入探讨C++中变量和函数的作用域、生命周期,包括栈区、堆区、全局区、文字常量区和代码区的内存划分。强调全局变量和局部变量的差异,以及静态变量的影响。通过实例解析静态全局变量和静态局部变量的特性,并解释extern关键字的作用。
摘要由CSDN通过智能技术生成

编程中需要深刻理解的最基础的东西就是:

1、变量的作用域和生命周期;

2、函数的作用域和生命周期;


C++程序执行时,内存块的划分。

1、栈区:编译器自动分配内存,回收内存。存放函数参数值,局部变量值。操作方式类似于数据结构中的栈。它不是数据结构中的栈,是因为数据结构中的栈是一个数据类型,它存储一些数据之后,然后就放入到了内存块的栈区,或者堆区等。


2、堆区:通常由程序员分配内存,程序员释放内存。它分配内存的方式类似于链表,和数据结构中堆不同(数据结构中的堆是完全二叉树,满足一定规则,分为大顶堆和小顶堆)。为什么是通常,(因为java中的堆的内存释放是又垃圾回收器完成的)。暂时说这么多,因为这里是为了澄清一些内容的概念。


3、全局区(静态区):编译器编译时分配内存,程序中的全局变量和静态变量就存储在这里面。(二者未初始化时放在相邻的区域,初始化后放在同一块区域)。它的内存由系统释放。而且存在于程序运行期间的始终。


4、文字常量区:存储常量字符串。有人说const修饰的常量存储在哪个区,是不是在常量区,const只是起修饰作用,在函数体外的就是存储在全局区,在函数体内的就是存储在栈区,const static修饰的,在函数体内,也是存储在全局区。(我自己认为)。释放由系统。


5、代码区:不解释,没必要解释。


全局

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值