C++变量在栈上的布局
来源:互联网 发布:mac安装brew命令 编辑:程序博客网 时间:2024/05/16 15:39
在笔试、面试中,经常有这样的题目:
问b的值是多少?
在C++中,double型变量占8个字节,int型变量占4个字节。所以b的值,就是a中的4个字节构成的整数值。这样,我们如果知道a在内存上如何存放,就可以得到b的值。
数据的存放,根据CPU的不同,有大端和小端方式。Intel的CPU使用的是小端方式,即:低位数据放在低地址,高位数据放在高地址。在栈上,分配方式为地址递减,即:先定义的变量,放在高地址出,后定义的变量放在低地址处。举例说明:
定义2个变量:int a = 0x003a0051;int b= 0x0042007b;
那它们在栈上的布局如下:
0x0012FF74 7b //b的内存布局
0x0012FF75 00
0x0012FF76 42
0x0012FF77 00
0x0012FF78 51 //a的内存布局
0x0012FF79 00
0x0012FF7A 3a
0x0012FF7B 00
从上面的内存布局我们可以看到,先定义的a放在高地址处,后定义的b放在低地址处;每个变量,高字节放在高地址处,低字节放在地址处;变量的地址为低字节所处的地址。
了解了上面的内容,再做开始出的题目,就容易了。但还有一些知识,需要知道。即double如何存放,具体参见下面的链接:
http://blog.csdn.net/virus026/archive/2008/01/22/2059989.aspx
掌握了以上内容,以后遇到此类问题,都可以以此解决。
- C++变量在栈上的布局
- C++,局部变量在栈上的地址,Release 和 Debug版本是不一样的
- c 语言变量的存储布局 笔记
- c、c++在定义变量,数组时的内存布局及内存字节对齐
- 倒排表在磁盘上的布局
- flex布局在ios8上的兼容性问题
- C语言变量长度在32位和64位处理器上的关系
- C/C++中结构体与类成员变量在存储上的内存对齐问题
- 在C ++中,可以用于变量和函数上的关键字是哪一个?
- c++:变量在内存上的分布
- 定义在GPU上的变量
- C/C++中const char *变量的内存布局位置
- VC在Debug模式下的变量内存布局
- C++ 内存布局 变量在堆栈的分配
- 对象在堆上,栈上,还是函数里面的局部变量
- 栈中变量的内存布局
- 变量的存储布局
- 变量的存储布局
- 试问我们都在做些什么类型的测试?
- How to install ASP.NET 1.1 with IIS7 on Vista and Windows 2008
- 根据时间进行查询
- 转:S3C6410中断控制详解
- 在Ubuntu 10.04.2 LTS上安装 Oracle SQL Developer3.0 (3.0.04.34)
- C++变量在栈上的布局
- AndroidGUI11:OptionsMenu的常用技巧
- 策略模式
- Oracle Connect By用法
- Perl的library设置
- 3dsmax模型导出插件调试技巧
- 游戏程序中的骨骼插件
- vim shell
- El表达式 empty用法