yuanjianhua2007
驱动牛犊
驱动牛犊
  • 注册日期2008-01-03
  • 最后登录2008-01-23
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1042回复:1

关于<<Programming the Microsoft Windows Driver Model>>书中的一段话不理解,求大家帮忙解释下。

楼主#
更多 发布于:2008-01-17 12:04
<<Programming the Microsoft Windows Driver Model>>书讲到堆分配函数时有这样一段话,引用原文如下:

你获得的内存块至少是按8字节边界对齐的。如果把某结构的实例放到分配的内存中,那么编译器赋予结构成员的4或8字节偏移在新内存中也将是4或8字节偏移。但在某些RISC平台上,结构成员可能以双字和四字对齐。出于性能上的考虑,希望内存块能适合处理器cache行的最少可能数,使用XxxCacheAligned类型代码可以达到这个要求。如果请求的内存多于一页,那么内存块将从页的边界开始。

---------------------------------------------------------------------------------------------------------------------------------

首先问下,第一句说的"你获得的内存块至少是按8字节边界对齐的",这句话是指光是只有分配的这个内存块按8字节对齐,还是整个堆中的所有内存块都是按这个8字节对齐的?

第二问下,"那么编译器赋予结构成员的4或8字节偏移在新内存中也将是4或8字节偏移"这句话,一个结构中所有成员的地址,相对结构的基址的偏移都是固定的吧,为什么这里单单要提到4或8字节,一个成员相对于结构基址的偏移是多少,在新内存就应该是多少吧。

理解不到书上这段话的意思,麻烦朋友们给讲下了。
yuanjianhua2007
驱动牛犊
驱动牛犊
  • 注册日期2008-01-03
  • 最后登录2008-01-23
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-01-17 20:30
初来乍到,新人发第一贴,大家帮下忙吧。
游客

返回顶部