C和VC中分配变量地址的问题
2007-04-27 21:48
302 查看
#include <stdio.h>
struct struct_A
{
int a; //4
char b; //1
int c; //4
short d; //2
}a;
struct struct_B
{int a; //4
char b; //1
short c; //2
int d; //4
}b;
int main()
{
printf("%d,%d",sizeof(a),sizeof(b));
return 0;
}
上述程序在KEILC,WINTC 和VC中运行的结果分别是:
1792,1792
7,7
16,12
可见,在KEIL C和WINTC中都是按照顺序分配为变量分配地址,在VC中分配的地址指遵循 “4的倍数”原则。即如果连续几个变量的长度不超过4字节,则分配4字节内,否则分配到下4个字节开始处。
上述程序中a中的4个变量地址分别为0X13FF70,0X13FF74,0X13FF78,0X13FF7C
b中4个变量的地址分别为0X13FF74,0X13FF78,0X13FF7A,0X13FF7C
因为b中char b 和short c 可以分配在4个字节之内,所以两个变量共分配了4个字节的空间。而a中相邻两个变量的长度都超过4个字节,故为每个变量都分配了4个字节的空间。
struct struct_A
{
int a; //4
char b; //1
int c; //4
short d; //2
}a;
struct struct_B
{int a; //4
char b; //1
short c; //2
int d; //4
}b;
int main()
{
printf("%d,%d",sizeof(a),sizeof(b));
return 0;
}
上述程序在KEILC,WINTC 和VC中运行的结果分别是:
1792,1792
7,7
16,12
可见,在KEIL C和WINTC中都是按照顺序分配为变量分配地址,在VC中分配的地址指遵循 “4的倍数”原则。即如果连续几个变量的长度不超过4字节,则分配4字节内,否则分配到下4个字节开始处。
上述程序中a中的4个变量地址分别为0X13FF70,0X13FF74,0X13FF78,0X13FF7C
b中4个变量的地址分别为0X13FF74,0X13FF78,0X13FF7A,0X13FF7C
因为b中char b 和short c 可以分配在4个字节之内,所以两个变量共分配了4个字节的空间。而a中相邻两个变量的长度都超过4个字节,故为每个变量都分配了4个字节的空间。
相关文章推荐
- VS2012中自动变量的地址分配问题
- PHP变量作用域以及地址引用问题
- VC++中全局变量的问题(转)
- 栈中变量地址分配
- C++类对象成员变量与成员函数内存分配问题
- vc中把变量定义在某一绝对地址上
- 创建子进程时变量的地址与父进程一样而数值不一样的问题
- C语言中变量的地址分配
- matlab运行出现“变量似乎会随着迭代次数改变而变化,请预分配内存,以提高运行速度”问题
- vc定义全局变量的问题
- C++中的成员变量的内存分配问题
- C++类对象成员变量与成员函数内存分配问题
- VS调试Qt程序时查看变量显示地址值问题解决
- 求助:Linux下地址的分配问题
- 指针,数组,连续开辟空间的地址分配和读取问题
- 如何分配变量到指定的地址
- VC++中全局变量的问题(转)
- c中定义变量的内存分配顺序问题
- C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?
- 数据结构 学习笔记之:结构体及其所定义变量的内存分配的问题