关于连续定义的几个变量的地址连续问题
2014-03-04 14:56
232 查看
代码如下:
以上代码就是打印出三个变量的地址(是在栈中分配内存的,向下延生),在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模式下
![](http://images.cnitblog.com/i/477717/201403/041446105321625.jpg)
2、release模式下
#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模式下
![](http://images.cnitblog.com/i/477717/201403/041446105321625.jpg)
2、release模式下
![](http://images.cnitblog.com/i/477717/201403/041447578187833.jpg)
相关文章推荐
- 关于头文件定义全局变量等问题
- c中switch case 中关于变量定义问题
- 关于Action里面定义的变量问题
- 关于方法内定义的类引用局部变量需要将变量设置final的问题
- 成员指针的定义与简单应用(成员变量地址的问题)
- 关于头文件变量重复定义问题怎么解决(thinkvd开发日志)
- 关于Js变量地址引用的问题
- 关于C语言BSS段问题以及变量定义的解答
- 关于“在C语言中只能在函数前面定义变量”的问题
- 关于keil多c文件工程中bit变量的声明定义问题
- 关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题
- 静态成员变量初始化问题。关于 error LNK2005 static int:已经在***.obj中定义
- c++中switch case 中关于变量定义问题
- 头文件定义全局变量的几个问题
- 关于php中foreach循环地址符及变量应注意的问题
- 关于ucos全局变量定义的问题
- 关于Python函数定义全局变量执行弹出SyntaxWarning的问题
- 关于Java语言for循环内外变量定义的问题
- 关于运行地址和加载地址的几个很多初学者模糊不清的问题我在这里总结一下
- 转载:关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题