对VC编译器空间分配的一点疑惑
#include "stdio.h"int main()
{
short array1[0x100];
short array2[0x100];
printf("The actual spaces of iarray1 is %x (array1-array2)\n",array1-array2);
printf("The declare spaces of iarray1 is %x (sizeof(array1))\n",sizeof(array1));
return 0;
}
在VC6平台下,上面运行的显示结果是
The actual spaces of iarray1 is 100 (array1-array2)
The declare spaces of iarray1 is 200 (sizeof(array1))
而在VS2005平台下,上面运行的显示结果是
The actual spaces of iarray1 is 104 (array1-array2)
The declare spaces of iarray1 is 200 (sizeof(array1))
也就是不管在 VC6平台下,还是在VS2005平台下,对于short array1[0x100];分配的实际空间大小(array1-array2)和期望的大小(sizeof(array1) 是不一致的,不知道这个算不算一个BUG ??还是C标准中本来就该这样解释
我本来感觉 (array1-array2)和 (sizeof(array1))这两个值应该是相等的!