更新
2024-07-05 本书已经出版 由于本库的草稿是我之前一个人写的,所以质量和正确性都不如经过两位作者和出版社编辑审阅和校正过的书稿。 如果你想阅读更加完善的版本,推荐购买正版书籍。
第四章 C++对象布局
前一章讨论了内存管理器(memory manager)如何管理内存。当一块内存(block)被内存管理器分配以后,它的所有权被转移到了申请这个内存的应用程序代码。
内存管理器标记这块内存正在被使用,并且直到应用层释放它之前,都不会触碰它。
当内存被使用的时候,内存管理器不知道也不关心应用程序是如何使用它的,只要应用层序不会跨越内存块用户空间的界限。
本章会讨论应用程序或者编译器是如何使用分配后的内存,也就是,如何布局一个数据结构和一个对象是如何被创建,更新和被销毁。
但是这跟调试有什么关系呢?一个内存块的内容可以反映放在这个内存块的对象的逻辑状态。所以理解内存块的每一个比特和字节以及它们与对象的关联是有帮助的。
当一个对象处在坏的状态,意味着corrupted或者不一致,这里的知识可以帮助一个工程师弄明白其中可能的原因。
(XT:下面首先阐述对齐和大小端,接着详解C++对象是如何布局的)