bss段主要是为了节省程序的目标文件或者说可执行文件所占的磁盘空间。
对于单个变量可能不明显,但当情形是初始化和未初始化的大型数组时,例如
int ar0[10000] = {1, 2, 3, ...};
和
int ar1[10000];
时,
对于单个变量可能不明显,但当情形是初始化和未初始化的大型数组时,例如
int ar0[10000] = {1, 2, 3, ...};
和
int ar1[10000];
时,
把ar1放在bss段,只记录共有10000*4个字节要初始化为0,而不是像ar0那样记录每一个数据1,2,3...,那么bss为目标文件所节省的磁盘空间还是相当可观的。
ps: bss = block started by symbol