Visual Studio C/C++ 连续两个 int 数据所占的内存地址之间相差12?
2012-09-17 23:36
429 查看
在Visual Studio 进行程序调试时发现连续两个整形数据的内存分配很是诡异,地址之间相差了12个字节,如下图:
但在VC++6.0中是相差4个字节呀!经过研究发现是和VS的解决方案配置有关,上述结果是默认采用Debug模式下得到的,通过修改VS的解决方案配置为 Release 模式,再重新运行原来的程序就会发现连续定义的两个int型数据内存还是连续分配的,地址相差4个字节:
并且发现,在Debug模式下面,内存是有大地址向小地址方向进行内存分配(即先定义的int数据的地址比后定义的int 数据地址大);
而在Release模式下面,内存是由小地址向大地址方向进行内存分配(即先定义的int数据的地址比后定义的int 数据地址小)。
这里可能只是从现象上分析了一下,后续如果发现原理机制上东东再继续分析分享。
但在VC++6.0中是相差4个字节呀!经过研究发现是和VS的解决方案配置有关,上述结果是默认采用Debug模式下得到的,通过修改VS的解决方案配置为 Release 模式,再重新运行原来的程序就会发现连续定义的两个int型数据内存还是连续分配的,地址相差4个字节:
并且发现,在Debug模式下面,内存是有大地址向小地址方向进行内存分配(即先定义的int数据的地址比后定义的int 数据地址大);
而在Release模式下面,内存是由小地址向大地址方向进行内存分配(即先定义的int数据的地址比后定义的int 数据地址小)。
这里可能只是从现象上分析了一下,后续如果发现原理机制上东东再继续分析分享。
相关文章推荐
- [VS C++学习] Microsoft Visual Studio存储/读取数据的默认路径
- 定义一个不受计算机字长限制的整数类INT,要求INT与INT以及INT与C++基本数据类型int之间能进行+、-、×、÷和=运算,并且能通过cout输出INT类型的值。(持续添加)
- 计算一串连续数组的之间 连续几个数(任意连续)之和的最大值 Microsoft Visual Studio
- C++求两个日期之间的相差天数
- [VS C++学习] Microsoft Visual Studio存储/读取数据的默认路径
- C++ 一个exe的两个运行实例之间共享数据
- C++ 一个exe的两个运行实例之间共享数据
- c++ 获取两个标准日期之间相差的秒数
- C++ Refactoring in Visual Studio 2015
- 计算两个日期之间相差的天数
- 两个Activity之间数据的传递
- php 获取指定两个时间之间相差的月份
- Microsoft Visual Studio Team System 和 Microsoft Visual SourceSafe 之间选择
- 如果在C#用WM_COPYDATA消息来实现两个进程之间传递数据
- oracle 求两个连续日期的时间点之间相隔的小时数和分钟数
- ATL-COM Visual Studio 2008 C++ ATL COM VC++ 教程 入门教程
- 如何连续在同一张纸打印两个数据窗口?
- 使用Ajax实现DropDownList和ListBox的联动以及两个ListBox之间数据的移动
- 数据结构基础之memset---有memset 抛出的int 和 char 之间的转换和字节对齐
- 如何在两个app 之间传递数据