gpt4 book ai didi

c - 我们什么时候需要使用 posix_memalign 而不是 malloc?

转载 作者:太空狗 更新时间:2023-10-29 16:28:43 24 4
gpt4 key购买 nike

似乎 posix_memalign 让您选择自定义的对齐方式,但什么时候需要这样做?

malloc内部已经做好了对齐工作。

更新

我问这个的确切原因是因为我看到 nginx 这样做,ngx_memalign(NGX_POOL_ALIGNMENT, size, log);,这里 NGX_POOL_ALIGNMENT 被定义为 16 nginxs.googlecode.com/svn-history/trunk/src/core/ngx_palloc.c

最佳答案

基本上,如果你需要比 malloc 更严格的对齐方式。 Malloc 通常返回一个对齐的指针,它可以与任何原始类型一起使用(在普通桌面计算机上通常为 8 个字节)。

但是,有时您需要在其他边界上对齐内存,例如 4K 对齐等。在这种情况下,您将需要 memalign

你会需要这个,例如,

  • 在编写内存管理器(例如垃圾收集器)时。在这种情况下,有时使用按较大块大小对齐的内存会很方便。这样,您可以将所有对象共有的元数据存储在分配区域底部的给定 block 中,并通过屏蔽对象指针的最低有效位来简单地访问它。
  • 当与硬件接口(interface)时(我自己从来没有这样做过,但是 IIRC,某些类型的 block 设备需要对齐内存)。有关详细信息,请参阅 n.m. 的回答。

关于c - 我们什么时候需要使用 posix_memalign 而不是 malloc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6410609/

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