C/C++程序的内存布局
C/C++中程序内存区域划分:
1. 内核空间:用户无法对这块空间进行读写,该空间是专门用来跑操作系统的。
2. 栈区:在调用函数时,函数调用空间、函数内局部变量、函数参数的存储单元都是在栈区上创建的,函数调用结束时这些存储单元自动被释放。
3. 堆区:一般由程序员自主的动态内存开辟和释放,若程序员不释放,程序结束时可能由OS回收。动态分配方式类似于链表。
4. 数据段:就是之前所说的静态区,主要用于存放全局数据、静态数据。
5. 代码段:用于存放代码经过编译链接后的二进制可执行程序和只读常量。
实际上普通的的局部变量是由放栈区分配的空间,而栈区的特点是在上面创建的变量出了作用域就自动销毁。而对于用static修饰的变量存放到了数据段(静态区),数据段的特点是在上面创建的变量,直到程序结束才会销毁,故生命周期长。而在堆区上开辟的空间特点是能够自主的调整其大小。
这份博客👍如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位🔎点赞👍评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧👀。