#include <iostream>
using namespace std;
void main()
{
int a = 1;
int b = 2;
int c = 3;
cout << sizeof(a) <<endl;
int *pa= &a;
printf("&a=%x\n",pa);
int *pb = &b;
printf("&b=%x\n",pb);
int *pc = &c;
printf("&c=%x\n",pc);
}
Debug下的输出结果是:
&a=1cf960
&b=1cf954
&c=1cf948
请按任意键继续. . .
这里a的首地址和b的首地址相隔6个字节。b的首地址和c的首地址相隔6个字节。
但是a的sizeof值却是4,那么两外两个字节跑哪里去了呢?
Release下的输出结果是:
4
&a=16fcc0
&b=16fcc4
&c=16fcc8
请按任意键继续. . .
Release下对程序做了优化,a的首地址和b的首地址相隔4个字节,恰好就是a的sizeof值。
#include <iostream>
using namespace std;
void main()
{
int a = 1;
int b = 2;
int c = 3;
int *pb = &b;
pb++;
printf("%d",*pb);
}
这段程序在Release下输出 1
在Debug下输出 -858993460