作者:小泽同学~
csdn个人主页:小泽同学~
码云:classmate-mzq
motto:己所不欲,勿施于人and勿以善小而不为,勿以恶小而为之
————————————————
前言:不出意外的话,我将在这里记录我的大学编程学习。
因为我也是小白,所以如果大家看到问题的话,可以直接在下面评论或者加我v私我,感谢大家!
个人v:m0106gm(添加的话麻烦备注csdn)
祝我们前程似锦
本人使用的开发环境工具是vs2022
C/C++ 程序内存分配的区域:
栈区(stack)
执行函数时,函数内部局部变量的存储单元都可以在栈上创建。函数执行结束后这些存储单元会被自动释放。栈内存分配运算内置于处理器的指令集中,拥有很高的效率,但是分配的内存容量是有限的。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。
堆区(heap)
一般由程序员自主分配释放,若程序员不主动不释放,程序结束时可能由操作系统回收。其分配方式类似于链表。
数据段(data segment)
静态存储区,存放全局变量和静态数据,程序结束后由系统释放。
代码段(code segment)
存放函数体(类成员函数和全局函数)的二进制代码。
有了这幅图,可以更好的理解static 关键字修饰局部变量的情况:
实际上,普通的局部变量是在栈区分配空间的,在栈区上创建的变量,出了作用域就会销毁。
但是,如果一个变量被 static 修饰,就会存放到数据段(静态区),而在数据段上创建的变量,直到程序结束才会销毁,所以生命周期因此而变长。
栈区的特点:在上面创建的变量出了作用域就销毁。
数据段的特点:在上面创建的变量直到程序结束才销毁
非常感谢你耐着性子把它读完
如果觉得我写的还不错,希望能点个赞或评论一下为我加油,感谢✌
愿我们一起努力奔跑,向美好的未来不断前进,愿我们从懵懵懂懂的一枚菜鸟逐渐成为大佬。加油,为自己点赞!