码迷,mamicode.com
首页 > 编程语言 > 详细

c/c++内存分区

时间:2020-06-28 20:42:12      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:源代码   函数的参数   分区   编译   忘记   内存管理   存储   自定义   而在   

1.栈区(stack):

主要用于存储函数的参数局部变量。栈区由系统进行内存管理,在函数执行完成时,系统自动释放栈区的内存,

而不需要用户的参与,整个程序的栈区的大小可以在编译器中由用户自行设定。

2.堆区

由用户手动申请,手动释放。 如果用户忘记对所申请的内存资源进行释放,该内存资源可能会在程序结束时由操

作系统进行释放(也可能不会)。

3.全局/静态存储区

用来存放程序中的全局变量静态变量。 在c语言中,初始化的全局变量和静态变量存放在一块内存区域中,而未

初始化的全局变量和静态变量存储在另一块相邻的存储区域。而在c++中则没有在静态存储区中将初始化和未初始

化的进行分开存储,因为c++会对未初始化全局变量和静态变量进行默认初始化(一般默认初始化为0)。该存储区

域的数据会在程序结束后由系统来释放

[注意]:

全局变量和静态变量在c++中存储方式是一样的,但不同的是全局变量在整个源代码中都是可以使用的,而静态变量

只能在当前文件中使用。

4.常量区

用来存储程序中的常量, 比如const常量,字符串常量等都存储在这个区域。该存储区域的数据会在程序结束时由系

统进行释放。

5.代码区

存放程序体的二进制代码。 比如我们程序中自定义的函数,其函数体就是以二进制代码的形式存储在这个区域的

c/c++内存分区

标签:源代码   函数的参数   分区   编译   忘记   内存管理   存储   自定义   而在   

原文地址:https://www.cnblogs.com/wang-1962918321/p/13204665.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!