底层指针和内存管理
Understaning pointers & memory management
我试图理解C++中的指针。
这里有一个小的代码示例:
int main(void) {
int var = 8;
void* pointer = &var; // 0x00A0FB64
}
还有一个记忆的图像: 在此处输入图像描述
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 位。
附带问题,从技术上讲,C++没有保证大小,只有int
至少为 16 位(以及其他类型的保证(。
因此,从理论上讲,只要满足类型大小的所有其他要求,它就可以是 28 位。只是在实践中,您可能不会有 28 位,但更有可能是 32 位。
相关文章:
- 当vector是tje全局变量时,c++中vector的内存管理
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- C++将字符串传递给 C 库以进行内存管理
- 从函数返回时C++内存管理
- 函数指针和 lambda 的内存管理
- 自定义内存管理器在发布模式下工作正常,但在调试模式下则不然
- C++中的内存管理
- C和C++中的内存管理有什么区别
- 字符 * 未从重载运算符或内存管理问题正确返回
- 如何在源代码中使用执行策略检测 C++17 的扩展内存管理算法的可用性?
- 底层指针和内存管理
- 智能指针,避免使用QNetworkAccessManager时进行手动内存管理
- c++中的内存管理问题
- 使用矢量时的内存管理
- 循环和内存管理中的指针算术C++?
- C++堆栈内存管理问题
- C 内存管理中的课程如何管理 - 研究
- 不可变数据模型的内存管理
- C++ 使用数组初始化时的 STL 向量内存管理
- SFML 纹理内存管理