目前,我们正在努力跟踪存储在内存中的变量,但我们面临以下问题,也许你会帮助我们全局变量用C不连续
目前,我们在定义了一些全局变量我们代码如下
int x;
char y;
而且我们添加下面的代码行
int main (int argc, char *argv[ ]){
printf("Memory of x %p\n",&x);
printf("Memory of y %p\n",&y);
system("pause");
return 0;
}
程序返回以下地址
Memory of x 0x028EE80
Memory of y 0x028EE87
如果我做的sizeof X和A的sizeofÿ我得到4 那么什么是0x028EE84和0x028EE86之间(整数类型和字符的大小)1?为什么它需要7个位置才能将char变量插入到内存中而不是将其插入0x028EE81内存位置?
这是一个64位的机器,对吧?它被称为对齐。有一个很好的答案在这里解释它:http://stackoverflow.com/questions/381244/purpose-of-memory-alignment – Fredrik
“int”在位置80,81,82,83,位置84,85处的“char” ,86,87,在最右边。 –
仔细查看打印输出。变量比你想象的要多得多。除非你有复制粘贴错误。 –