关于连续定义的几个变量的地址连续问题
代码如下:
#include<iostream> using namespace std; void main() { int i1; int i2; int i3; cout<<&i1<<endl; cout<<&i2<<endl; cout<<&i3<<endl; }
以上代码就是打印出三个变量的地址(是在栈中分配内存的,向下延生),在Debug和release模式下,情况会有所不同!!可以很明显的看出,debug下每个地址之间相差12个字节;而release模式下则相差4个字节;按我们的理解每个int类型的变量应该需要4个字节,所以release情况下的结果是符合我们的预想的。为什么debug会发生不同呢?这个地址还是连续的,只是debug版本在每个变量两边增加了,若干数据。变量尺寸变大了。32Bits 的int通常是4字节,但是debug版本,实际上分配了12字节,左右各4字节。
于是好像不连续了。实际按照12字节算的话还是连续的。
http://bbs.csdn.net/topics/390376066
http://bbs.csdn.net/topics/310138883
1、debug模式下
2、release模式下