美文网首页
bss段不占用空间理解

bss段不占用空间理解

作者: eesly_yuan | 来源:发表于2016-08-30 00:44 被阅读104次

bss段,只是给未初始化变量进行预留空间进行必要的记录,里面记录的内容并占用变量的实际大小

  1 #include <stdio.h>
  2 
  3 #ifdef UNINIT_VAR
  4 char a[1024];
  5 #endif
  6 
  7 int main(int argc, char ** argv)
  8 {
  9     printf("hello\n");
 10     return 0;
 11 }

分别带宏UNINIT_VAR和不带,编译得到test_with_uninit_var和test_without_var,二者大小如下

ls -al test_with*
-rwxr-xr-x 1 root root 7303 Aug 30 00:30 test_without_var
-rwxr-xr-x 1 root root 7321 Aug 30 00:30 test_with_uninit_var

size test_with*
   text    data     bss     dec     hex filename
   1102     280       4    1386     56a test_without_var
   1102     280    1056    2438     986 test_with_uninit_var

增加了18字节,并不是1024个字节

相关文章

  • bss段不占用空间理解

    bss段,只是给未初始化变量进行预留空间进行必要的记录,里面记录的内容并占用变量的实际大小 分别带宏UNINIT_...

  • 理解bss段为啥不占磁盘空间

    elf文件中的.bss段,存放未初始化的全局变量,将.data和.bss分开的理由是为了节约磁盘空间,.bss不占...

  • C语言内存管理

    对于一个C语言程序而言,内存空间主要由五个部分组成代码段(.text)、数据段(.data)、BSS段(.bss)...

  • 栈为什么要由高地址向低地址扩展?

    原因 计算机内存分了代码段(.text段)、初始化的数据段(.data段)、未初始化的数据段(.bss段)、堆空间...

  • 链接脚本的分析

    说明1:标准应用程序包括3类标准段空间:.text运行代段;.data全局变量等具有初始值的数据空间;.bss暂态...

  • BSS段 data段 text段 堆heap 和 栈stack

    1.可执行程序包括BSS段、[数据段]、[代码段](也称文本段)。 BSS(Block Started by Sy...

  • 关于内存五大分区

    关于内存五大分区 BSS段: BSS段( bss segment )通常是指用来存放程序中未初始化的全局变量和静态...

  • iOS内存的五大分区

    关于iOS内存的五大分区 1.bss段( bss segment ) bss段通常是指用来存放程序中未初始化的全局...

  • 关于内存五大分区

    BSS段:BSS段( bss segment )通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。...

  • Linux应用程序地址布局

    一、程序构成 在学习Linux应用程序开发时,经常会遇到如下概念:代码段、数据段、BSS段等。BSS(Block ...

网友评论

      本文标题:bss段不占用空间理解

      本文链接:https://www.haomeiwen.com/subject/lodfettx.html