区别:

.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段?相关推荐

  1. Oracle内存分配中的子池(Subpool)--ORA-04031

    Oracle内存分配中的子池(Subpool)--ORA-04031 在 Oracle 9i 和之后的版本,共享池可以被划分为子池.每个子池是一个小号的共享池,有它自己的空闲列表,内存结构条目,和LR ...

  2. java内存-xms 单位_谈谈内存设置中的xms,xmx等*

    可以使用-Xms来设置jvm最小能挖到的内存,观察输出结果.java -Xms300M Test 最近在网上看到一些人讨论到java.lang.Runtime类中的freeMemory(),total ...

  3. C和指针之动态内存分配malloc、calloc、realloc简单使用和区别

    1.介绍 3个函数都在<stdlib.h>头文件 1).void* malloc(unsigned size); 在内存的动态存储区中分配一块长度为size字节的连续区域,参数size为需 ...

  4. 在java的内存分配中存在下面一些内存划分

    方法区:所有线程共享,用于存放加载的类(class)信息.静态变量(static).常量(final)等数据. 堆:所有线程共享,存放用new关键字创建的对象. 虚拟机栈:线程隔离,存放类中调用的方法 ...

  5. 操作系统 非连续分配_操作系统中的连续和非连续内存分配

    操作系统 非连续分配 In this article, we will learn about the different types of memory management techniques ...

  6. c语言中指针往内存写值,C语言编程常见问题解答之指针和内存分配

    指针为C语言编程提供了强大的支持--如果你能正确而灵活地利用指针,你就可以直接切入问题的核心,或者将程序分割成一个个片断.一个很好地利用了指针的程序会非常高效.简洁和精致. 利用指针你可以将数据写入内 ...

  7. C++中内存分配、函数调用和返回值问题

    在谈述函数调用和返回值问题之前,先来看看C++中内存分配的问题. C++编译器将计算机内存分为代码区和数据区,很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量.数据区 ...

  8. JAVA中堆栈和内存分配原理

    JAVA中堆栈和内存分配原理 1.栈.堆 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在 ...

  9. 浅谈C++中内存分配、函数调用和返回值问题

    在谈述函数调用和返回值问题之前,先来看看C++中内存分配的问题. C++编译器将计算机内存分为代码区和数据区,很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量.数据区 ...

最新文章

  1. Idea groovy表生成实体类带注释
  2. 解题报告(八) prufer 序列与 Cayley 公式(ACM / OI)超高质量题解
  3. 解决CentOS6.5虚拟机克隆后无法上网(网卡信息不一致)的问题
  4. 十一.python面向对象(接口)abstractmethod,ABCMeta
  5. java中创建对象的方式
  6. laravel 163发送邮件
  7. 怎样理解阻抗匹配?---非常好
  8. spring 数组中随机取几个_美团Java研发三面(3年经验):MySQL+Spring源码+分布式+算法+线程...
  9. Pytorch的网络结构可视化:Netron与TensorBoardX
  10. boost::geometry::transform用法的测试程序
  11. python的6种基本数据类型--字典
  12. 手把手教你用ESP32制作一个游戏机
  13. Coursera 机器学习笔记(五)
  14. Python稳基修炼的经典案例1(计算机二级、初学者必须掌握的例题)
  15. C#winform两个或多个panel重叠布局时如何显示一个
  16. 【黑马程序员数据库】数据库基础大总结
  17. Unity-拓展篇-接入海康威视摄像头
  18. 2021-10-26
  19. 全球及中国丝蛋白行业研究及十四五规划分析报告
  20. 微信封面怎么设置?微信主页面的背景怎么设置

热门文章

  1. 鸿蒙修复了蓝牙麦克风问题吗,手机变传声器、麦克风?华为P40的隐藏功能你知道吗?...
  2. 快递单号中的派件时效该怎么查?
  3. H5页面在iOS11系统上白屏了,bug修复过程
  4. 云起实验室:ECS数据管理实践-备份与恢复
  5. 荣耀智慧屏还可以升到鸿蒙2,从荣耀智慧屏到华为智慧屏 “大屏”时代已经拉开...
  6. 数据库为什么需要锁机制?有哪些锁机制?
  7. video视频兼容苹果和安卓
  8. S5PV210 对电源、地,DQ, DQM, DQS 信号的布线向导
  9. pygame制作游戏全套的
  10. JS 单引号、双引号与反引号的区别