博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正确的C++/C堆栈
阅读量:7046 次
发布时间:2019-06-28

本文共 598 字,大约阅读时间需要 1 分钟。

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

转载地址:http://wmdol.baihongyu.com/

你可能感兴趣的文章
使用Xcode和Instruments调试解决iOS内存泄露
查看>>
在SharePoint 2010 中配置Remote Blob Storage FILESTREAM Provider
查看>>
Flex与.NET互操作(六):Flex和.NET协同开发利器FluorineFx
查看>>
局部临时表和表变量的重复创建问题随笔
查看>>
wordpress自动选择上一篇文章选择的分类目录
查看>>
Java并发编程:Thread类的使用
查看>>
.net 最佳实践一:监测.net代码中的高内存消耗函数<转
查看>>
13.3. 查看命令
查看>>
[LeetCode] Number of Distinct Islands 不同岛屿的个数
查看>>
【MyEcplise】build workspace卡死
查看>>
模态框中再嵌套模态框,关闭第二个模态框时,会导致第一个模态框的滚动条消失的情况...
查看>>
Ruby测试小代码[计算50以内的素数]
查看>>
RabbitMQ学习系列(一): 介绍
查看>>
微信团队公布企业微信确实马上要推出了
查看>>
(4) Spring中定时任务Quartz集群配置学习
查看>>
Redis模块学习笔记(一)RediSearch简单使用
查看>>
Android Studio在线安装Android SDK注意事项
查看>>
JavaWeb 文件 上传 下载
查看>>
小技巧
查看>>
Ajax beforeSend和complete 方法
查看>>