C:谈谈内存分配中的(.data)段和(.bss)段的区别?为什么要分.data段和.bss段?
区别:
.data段:
存放已初始化的全局变量。在编译器编译的时候,会给已初始化的数据分配内存空间,数据保存在目标文件中。
.bss段:
(bss是英文Block Started by
Symbol的简称。)存放未初始化的全局变量。在编译器编译的时候,不会给该段的数据分配空间,只是记录数据所需的空间大小。程序执行的时候再分配内存并将内存清零。
为什么要分.data段和.bss段?
在程序编译的时候,不会给.bss段中的数据分配空间,只是记录数据所需空间的大小。在程序执行的时候,才会给.bss段中的数据分配内存。通过这种方式,可以节省一部分内存空间,进一步缩减可执行程序的大小。
思考:
C:请描述一个可执行程序占用的内存分为哪几个区?每个分区各自的作用?
C:谈谈内存分配中的(.data)段和(.bss)段的区别?为什么要分.data段和.bss段?
C:谈谈内存分配中的堆和栈的区别?为什么要有堆区和栈区呢?
收录于:
嵌入式软件/BSP开发工程师/Linux驱动工程师/C语言经典笔试面试题大全
C:谈谈内存分配中的(.data)段和(.bss)段的区别?为什么要分.data段和.bss段?相关推荐
- Oracle内存分配中的子池(Subpool)--ORA-04031
Oracle内存分配中的子池(Subpool)--ORA-04031 在 Oracle 9i 和之后的版本,共享池可以被划分为子池.每个子池是一个小号的共享池,有它自己的空闲列表,内存结构条目,和LR ...
- java内存-xms 单位_谈谈内存设置中的xms,xmx等*
可以使用-Xms来设置jvm最小能挖到的内存,观察输出结果.java -Xms300M Test 最近在网上看到一些人讨论到java.lang.Runtime类中的freeMemory(),total ...
- C和指针之动态内存分配malloc、calloc、realloc简单使用和区别
1.介绍 3个函数都在<stdlib.h>头文件 1).void* malloc(unsigned size); 在内存的动态存储区中分配一块长度为size字节的连续区域,参数size为需 ...
- 在java的内存分配中存在下面一些内存划分
方法区:所有线程共享,用于存放加载的类(class)信息.静态变量(static).常量(final)等数据. 堆:所有线程共享,存放用new关键字创建的对象. 虚拟机栈:线程隔离,存放类中调用的方法 ...
- 操作系统 非连续分配_操作系统中的连续和非连续内存分配
操作系统 非连续分配 In this article, we will learn about the different types of memory management techniques ...
- c语言中指针往内存写值,C语言编程常见问题解答之指针和内存分配
指针为C语言编程提供了强大的支持--如果你能正确而灵活地利用指针,你就可以直接切入问题的核心,或者将程序分割成一个个片断.一个很好地利用了指针的程序会非常高效.简洁和精致. 利用指针你可以将数据写入内 ...
- C++中内存分配、函数调用和返回值问题
在谈述函数调用和返回值问题之前,先来看看C++中内存分配的问题. C++编译器将计算机内存分为代码区和数据区,很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量.数据区 ...
- JAVA中堆栈和内存分配原理
JAVA中堆栈和内存分配原理 1.栈.堆 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在 ...
- 浅谈C++中内存分配、函数调用和返回值问题
在谈述函数调用和返回值问题之前,先来看看C++中内存分配的问题. C++编译器将计算机内存分为代码区和数据区,很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量.数据区 ...
最新文章
- Idea groovy表生成实体类带注释
- 解题报告(八) prufer 序列与 Cayley 公式(ACM / OI)超高质量题解
- 解决CentOS6.5虚拟机克隆后无法上网(网卡信息不一致)的问题
- 十一.python面向对象(接口)abstractmethod,ABCMeta
- java中创建对象的方式
- laravel 163发送邮件
- 怎样理解阻抗匹配?---非常好
- spring 数组中随机取几个_美团Java研发三面(3年经验):MySQL+Spring源码+分布式+算法+线程...
- Pytorch的网络结构可视化:Netron与TensorBoardX
- boost::geometry::transform用法的测试程序
- python的6种基本数据类型--字典
- 手把手教你用ESP32制作一个游戏机
- Coursera 机器学习笔记(五)
- Python稳基修炼的经典案例1(计算机二级、初学者必须掌握的例题)
- C#winform两个或多个panel重叠布局时如何显示一个
- 【黑马程序员数据库】数据库基础大总结
- Unity-拓展篇-接入海康威视摄像头
- 2021-10-26
- 全球及中国丝蛋白行业研究及十四五规划分析报告
- 微信封面怎么设置?微信主页面的背景怎么设置
热门文章
- 鸿蒙修复了蓝牙麦克风问题吗,手机变传声器、麦克风?华为P40的隐藏功能你知道吗?...
- 快递单号中的派件时效该怎么查?
- H5页面在iOS11系统上白屏了,bug修复过程
- 云起实验室:ECS数据管理实践-备份与恢复
- 荣耀智慧屏还可以升到鸿蒙2,从荣耀智慧屏到华为智慧屏 “大屏”时代已经拉开...
- 数据库为什么需要锁机制?有哪些锁机制?
- video视频兼容苹果和安卓
- S5PV210 对电源、地,DQ, DQM, DQS 信号的布线向导
- pygame制作游戏全套的
- JS 单引号、双引号与反引号的区别