我有一个关于内存管理和Visual Studio中的内存窗口的问题
I have a question about memory management and the memory window from Visual Studio
假设我有这样的代码:
#include<iostream>
using namespace std;
int main()
{
int a = 1633;
}
我在第4行放了一个断点,这样我就可以通过使用Visual Studio中的"内存"窗口来了解内存是如何分配的。我注意到,当我插入&a
时,它会显示以下内容:
0x00CFF800 cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc 61 06 00 00 cc cc cc cc 3c
我知道我的变量是61 06 00 00
,因为它被突出显示了。
问题:
为什么我在那个地址有所有这些元素,而不仅仅是
a : 61 06 00 00
?为什么写成那样?我知道有4个字节,但我不知道如何将代码转换为我的实际数字。那么,为什么
61 06 00 00
等于a=1633
呢?
为什么我在地址中有所有这些元素
你没有。VS还会显示与变量相邻的字节。
最左边的cc
在地址0x00CFF800
,下一个cc
在0x00CFF801
,依此类推
为什么会这样写?
每对符号代表一个字节,符号为十六进制数字。
字节从最低有效位到最高有效位排列(小端字节顺序(。
解释该值的最简单方法是:
- 反转字节顺序:
61 06 00 00
->00 00 06 61
- 将得到的十六进制数转换为十进制数:
00000661
(十六进制(->1633
(十进制(
这相当于首先将每个单独的字节从十六进制转换为十进制:97 6 0 0
,然后将这些值乘以256:97 * 256^0 + 6 * 256^1 + 0 * 256^2 + 0 * 256^3 = 97 + 6 * 256
的幂。
相关文章:
- C++ 中 std::vector 的内存问题
- 实现快速排序的内存问题
- 此add_node函数会导致内存问题吗?
- C++:为什么这段代码给我内存问题/未定义的行为?
- 我不明白附加字符串的内存问题
- 是否有可能存在不会崩溃程序的内存问题
- 在发布版本中删除类指针会导致内存问题
- Android OpenCV 应用程序的内存问题
- 线程的内存问题(微小线程,C++)
- 递归结构的向量有内存问题
- C++合并排序内存问题
- 将智能指针发送到Protobaf.内存问题
- 潜在的动态内存问题
- JNI 中的内存问题
- C++Lambda函数关闭-内存问题
- 解决由全局静态变量引起的内存问题
- 类堆栈内存问题(致命错误)
- QNetworkAccessManager内存问题
- 读取进程内存问题未更新
- 类指针内存问题