2 a3111006354 a3111006354 于 2014.10.15 09:40 提问

C语言内存管理,BBS段内存分配
#include<stdio.h>
int a;
int b;
int c=1;
int d=1;

void main(){
    printf("%d\n",sizeof(int));
    printf("%p,%p,%p,%p\n",&a,&b,&c,&d);
}

运行结果:
4
00404090,004040A0,00402000,00402004

想要问的是:程序是不是给变量a,b分配了16个字节的空间,如果是,为什么分配16个字节,我知道的是,变量a,b是未初始化的全局变量,保存在BSS段

3个回答

ahnu120705097
ahnu120705097   2014.10.15 18:07

没有分配16个字节,bss段分配也不一定是连续的分配的啊

a3111006354
a3111006354 字节肯定是4,我也有试过了
3 年多之前 回复
ahnu120705097
ahnu120705097 你查看地址是不行的,最好用sizeof来直接查看它的字节
3 年多之前 回复
a3111006354
a3111006354 可是我也有试过多添加几个变量,生成的结果也是相隔16个字节的
3 年多之前 回复
wangyaninglm
wangyaninglm   Ds   Rxr 2015.01.02 17:24

分配的是32个字节吧,不是16个

oyljerry
oyljerry   Ds   Rxr 2015.01.02 17:51

间隔要考虑对齐。然后编译器实现

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!