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

代码如下:

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

 

posted @ 2014-03-04 14:56  yexuannan  阅读(850)  评论(0编辑  收藏  举报