gpt4 book ai didi

c++ - 理解指针和内存管理

转载 作者:行者123 更新时间:2023-11-28 04:07:59 25 4
gpt4 key购买 nike

我正在尝试理解 C++ 中的指针。

我们有一个小代码示例:

int main(void) {
int var = 8;
void* pointer = &var; // 0x00A0FB64
}

还有一张内存图: enter image description here

0x00A0FB64  08 00 00 00 cc cc cc cc ca c8 a0 1d 84 fb a0 00 ee 2b bf 00 01 00 00 00 20 53 12 01 00 5a 12 01 dc fb a0 00 50 2a bf 00

十六进制有08 00 00 00,转为二进制:

我们将得到 1000 00000000 00000000 00000000

整数的大小应该是32位,但只有28位。

这怎么可能?

我没看错整数的内存表是(?):

0x00A0FB64 -> 08
0x00A0FB65 -> 00
0x00A0FB66 -> 00
0x00A0FB67 -> 00

感谢您的帮助!

最佳答案

08 在二进制中是 1000。但是,00001000 也是如此。

这样,内存实际上变成了:00001000 00000000 00000000 00000000,也就是32位。


附带问题,技术上有are no guaranteed sizes in C++ ,只有 int 至少是 16 位(以及对其他类型的其他保证)。

因此,理论上,它可以是 28 位,只要满足所有其他类型大小的要求。只是在实践中,您可能不会有 28 位,而更有可能有 32 位。

关于c++ - 理解指针和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58358436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com