阅读:1042回复:1
关于<<Programming the Microsoft Windows Driver Model>>书中的一段话不理解,求大家帮忙解释下。
<<Programming the Microsoft Windows Driver Model>>书讲到堆分配函数时有这样一段话,引用原文如下:
你获得的内存块至少是按8字节边界对齐的。如果把某结构的实例放到分配的内存中,那么编译器赋予结构成员的4或8字节偏移在新内存中也将是4或8字节偏移。但在某些RISC平台上,结构成员可能以双字和四字对齐。出于性能上的考虑,希望内存块能适合处理器cache行的最少可能数,使用XxxCacheAligned类型代码可以达到这个要求。如果请求的内存多于一页,那么内存块将从页的边界开始。 --------------------------------------------------------------------------------------------------------------------------------- 首先问下,第一句说的"你获得的内存块至少是按8字节边界对齐的",这句话是指光是只有分配的这个内存块按8字节对齐,还是整个堆中的所有内存块都是按这个8字节对齐的? 第二问下,"那么编译器赋予结构成员的4或8字节偏移在新内存中也将是4或8字节偏移"这句话,一个结构中所有成员的地址,相对结构的基址的偏移都是固定的吧,为什么这里单单要提到4或8字节,一个成员相对于结构基址的偏移是多少,在新内存就应该是多少吧。 理解不到书上这段话的意思,麻烦朋友们给讲下了。 |
|
沙发#
发布于:2008-01-17 20:30
初来乍到,新人发第一贴,大家帮下忙吧。
|
|