正确的C++/C堆栈

在理解C/C++内存分区时,常会碰到如下术语:数据区,堆,栈,静态存储区,静态区,常量区,常变量区,全局区,字符串常量区,静态常量区,静态变量区,文字常量区,代码区等等,初学者被搞得云里雾里。在这里,尝试捋清楚以上分区的关系。[1] 数据区包括:堆,栈,全局/静态存储区。   全局/静态存储区包括:常量区(静态常量区),全局区(全局变量区)和静态变量区(静态区)。   常量区包括:字符串常量区和常变量区。   代码区:存放程序编译后的二进制代码,不可寻址区。 可以说,C/C++内存分区其实只有两个,即代码区和数据区。 一、真正合理的C++的内存划分为栈区、堆区、全局区/静态区和代码区。 这里去掉自由存储区,增加了代码区,理由会在下面讲到。 栈区:由系统进行内存的管理。 说明:主要存放函数的参数以及局部变量。栈区由系统进行内存管理,在函数完成执行,系统自行释放栈区内存,不需要用户管理。整个程序的栈区的大小可以在编译器中由用户自行设定,默认的栈区大小为3M。 堆区:由用户手动申请,手动释放。在C中使用malloc,在C++中使用new(当然C++中也可以使用malloc)。 全局/静态区:全局、静态数据存放在一起的,初始化的全局变量和静态变量是在一起的。未初始化的全局变量和静态变量是在相邻的空间中。这里包括常量区。 代码区:存放程序体的二进制代码。比如我们写的函数,都是在代码区的。

原文链接: https://www.cnblogs.com/qiumingcheng/p/7826708.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    正确的C++/C堆栈

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/263358

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午3:42
下一篇 2023年2月14日 下午3:42

相关推荐