关于linux内存 数据段和bss段的疑惑???

数据段和bss段分别存放 已初始化/未初始化 的全局变量和静态变量。

那么,假如bss段的全局变量和静态变量在代码执行中被初始化了,那么会不会被转移到
数据段存储呢???

首先我觉得你所说的在执行中被初始化的说法是不正确的,应该叫赋值。
接下来我们看一段代码:

#include <stdio.h>
int a;
int b=10;
int c=11;
int main(void)
{
    int d;
    int e=12;
    return 0;
}

用gcc编译后,(在linux下用命令size,得到如下结果)

text       data     bss     dec        hex      filename
1115     560          8    1683     693     t10

继续看下面修改后的代码:

#include <stdio.h>
int a;
int a1; 
int a2; 
int a3; 
int b=10;
int c=11;
int main(void)
{
    int d;
    int e=12;
    return 0;
}

再用size命令,你会看到:

text       data     bss     dec     hex filename
1115        560      24    1699     6a3 t10

通过这些数据,你应该很容看出bss的大小变化,
而你所说的会不会转移的问题,我想说,程序被编译后,
就只会加载代内存中等待执行,不会转移的。
希望对你有用!