c语言编译器储存有什么用,C编译器怎么样对内存划分和使用
第一、C的编译器对内存空间的划分
这里,编译器将内存划分成4个区,分别是栈区、堆区、全局/静态区、常量区。如果要更细地划分,还可以添加一个自由存储区;把全局区看作两部分,为初始化全局区和未初始化全局区。
第二、程序中出现的不同量在内存中的保存
int a = 0; //a:全局初始化区
char *p1; //全局未初始化区
main()
{
int b; //栈
char s[] = "abc"; //栈
char *p2; //栈
char *p3 = "123456"; //"123456"在常量区,p3在栈上。
static int c = 0; //全局(静态)初始化区
p1 = (char *)malloc(10);
p2 = (char *)malloc(20); //分配得来得10和20字节的区域就在堆区。
//123456放在常量区,编译器可能会将它与p3所指向的"123456"优化成一块。
strcpy(p1, "123456");
}
第三、不同内存区中的空间使用有什么特点
上诉程序,已经给出了程序中出现的量,如何划分存储空间。说明如下:
1、栈 - 由编译器自动分配释放,如我们定义了一个变量,由编译器负责为它分配空间和回收。
2、堆 - 一般由程序员通过函数(malloc/free等)分配释放,若程序员不释放,程序结束时可能由OS回收
3、全局区(静态区)- 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。同样由编译器分配释放,不过释放要等到程序结束时
4、常量存储区 - 编译器负责管理,程序结束释放
也就是说,C语言中,我们实际使用到,能对值发生改变的有堆、栈和全局区,而真正能由我们自由分配和释放的操作在堆区完成。
C编译器怎么样对内存划分和使用.doc
下载Word文档到电脑,方便收藏和打印[全文共709字]
编辑推荐:
下载Word文档
c语言编译器储存有什么用,C编译器怎么样对内存划分和使用相关推荐
- 【HBuilderX】预编译器错误:代码使用了scss/sass语言,但未安装相应的编译器插件,请前往插件市场安装该插件:
[HBuilderX]预编译器错误:代码使用了scss/sass语言,但未安装相应的编译器插件,请前往插件市场安装该插件: 一.报错 二.报错原因 三.解决办法 一.报错 预编译器错误:代码使用了sc ...
- 预编译器错误:代码使用了less语言,但未安装相应的编译器插件,请前往插件市场安装该插件
问题002:预编译器错误:代码使用了less语言,但未安装相应的编译器插件,请前往插件市场安装该插件 [编译错误] 使用HBUilderX编译运行时出现 [解决过程] 选择 "工具–插件安装 ...
- 嵌入式C语言自我修养:从芯片、编译器到操作系统(附送书籍)
关注+星标公众号,不错过精彩内容 来源 | 宅学部落 最近,阅读了王工(王利涛)赠送的一本由他编著的书籍<嵌入式C语言自我修养>,感觉写的挺不错.今天分享一下这本书籍<嵌入式C语言自 ...
- 每日一书丨嵌入式C语言自我修养:从芯片、编译器到操作系统
最近,阅读了王工(王利涛)赠送的一本由他编著的书籍<嵌入式C语言自我修养>,感觉写的挺不错.今天分享一下这本书籍<嵌入式C语言自我修养>:从芯片.编译器到操作系统. 从芯片.编 ...
- c语言如何用数组存坐标,c语言 数组储存特殊的符号
c语言: 时空猎人特殊符号的打法,缺失:c语言数组储存的符号3292/9 各位<时空猎人>的玩家朋友们,大家好!欢迎大家访问新浪时空猎人专区,哪里都可以聊天,游戏中也有聊天系统,分为团队聊 ...
- c语言编译器 代码优化,c编译器高级篇!!搞定c编译器优化
对于c编译器,想必大家也有所了解,3款主流c编译器也是活跃在不同人群的PC上.网络上很多文章都止步于对c编译器的介绍,并未探索c编译器更加深层次的内容.而在本文中,将涉及c编译器的高级部分--c编译器 ...
- Go语言汇编优化-蒙卓:汇编直接操作内存-减少读写,并行操作,硬件加速
讲汇编优化,不得不说一句高德纳的名言--过早的优化就是万恶之源.如果你们没有被逼到绝路,或者要榨干CPU的性能,千万不要尝试以下演讲的内容. 我给 Go 的 1.11 提交了这几个项目,第一个是 ...
- 编译器不识别stm指令_编译器简介
编译器是将"一种语言(高级语言)"翻译为"另一种语言(低级语言)"的程序. 编译器能够识别代码中的词汇.句子以及各种特定的格式,并将他们转换成计算机能够识别的二 ...
- 编译器:GNU工具链GCC编译器的编译方法和编译步骤
https://www.runoob.com/w3cnote/working-process-of-the-compiler.html https://www.runoob.com/w3cnote/g ...
最新文章
- 图像处理之基础---周末戏说卷积
- 两段用来启动/重启Linux下Tomcat的Perl脚本
- 如何通过VC的 CHttpFile 抓取网页内容
- C#实现DataTable按天分组并计数
- MATLAB信号处理之连续时间系统的时域分析
- ssis 派生列_具有多个表达式与多个转换的SSIS派生列
- mysql on 子句_ON子句中的MySQL未知列
- 十大免费网络工具 瞬间提升业务效率
- 惊呆了,我们的加密视频教学竟然可以轻易翻录和破解!!!
- 计算机总是莫名其妙重启,电脑老是自动重启怎么办,电脑为什么经常自动重启_系统圣地...
- [C#]Windows服务程序[转载西门吹雪的好文章]
- 获取官方win10系统镜像方法
- 南华大学计算机考研真题,2021南华大学考研历年真题复习资料
- 天耀18期 -08.面向对象-上转型【作业】
- 手写Android热修复
- anaconda企业版下载_Anaconda免费版下载-多功能Python集成开发环境 v2020.02 免费版 - 安下载...
- ARM与NEON加速指令
- 再先进的在线教学,也要回归这个本质
- 免费网络测试仪 MiniSMB Hurricane II — 如何测试通过虚拟机发包
- Mapgis to shp数据转换
热门文章
- Eclipse如何添加Maven的scala支持
- java中swing循环_在Java游戏循环中使用“ SwingUtilities.invokeLa...
- IntelliJ IDEA 内存优化最佳实践
- Springboot整合log4j2日志全解
- 23种设计模式(5)-适配器模式
- 2019.08.26关于分页
- appium启动APP配置参数:
- echarts 水桶注水式柱状图
- poj 2240 Bellman-Flod 求环
- (转)十分钟入门pandas