c/c++常变量存放。栈区,堆区,静态区

学习语言,首先等知晓所敲下的代码做了什么,而代码中最重要的就是变量与常量,这些构成函数,产生功效。

首先得清楚以下几个知识点(或者说专有名词)

1.生命周期:变量的作用范围,类似生物的存活周期,对变量的使用得在其生命周期内。很好理解。

2. 内存:内存储器的存储量,理所当然,一个数据得占用一块物理空间,逻辑的东西得有物理的东西来支持。而存储器在一般电脑上是:寄存器-> 缓存->内存->硬盘。

 

 

栈区(stack):空间小,系统自动创建销毁。生长方向是由高地址向低地址生长。

堆区(heap):这个很关键,也是c/c++较很多语言灵活的地方,程序员手动开辟,手动释放,程序结束时可能由 OS 回收。使用关键字malloc/new,free/delete对其开辟释放空间,每个人电脑的空间都是有限的。生长方向与栈区相反。

静态区( static):内容在总个程序的生命周期内都存在,由编译器在编译的时候分配。存储。

文字可能冗杂,结合我绘制的图片方便理解记忆。

c/c++常变量存放。栈区,堆区,静态区_第1张图片

多对理工科的东西进行汇总,形成知识网络,更好地去理解,最好绘制成思维导图,形成逻辑思维。

清楚局部变量,全局变量,动态内存开辟释放,就是学习c/cpp的一个基础。

绝大多数是在栈上完成,系统自动开辟释放,比如函数内部定义一个变量a=1,我们不需要对其理睬,在其生命周期完结(函数停止时)自动释放空间。

但是我们创建一个链表,哈希之类的数据结构,就要自己动态开辟空间,也要自己释放空间,不然内存持续占用不释放就会宕机。这个就类似c++中的析构函数。

 

你可能感兴趣的:(c/c++常变量存放。栈区,堆区,静态区)