您的位置:首页 > 其它

关于连续定义的几个变量的地址连续问题

2014-03-04 14:56 232 查看
代码如下:

#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模式下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: