posix_memalign()占用多少额外内存?

how much extra memory does posix_memalign() take?

本文关键字:多少 内存 memalign posix      更新时间:2023-10-16

我正试图决定是否应该使用memalign()而不是malloc(),因为对齐内存会使我的工作更容易。我在这里阅读了GNU文档(http://www.gnu.org/software/libc/manual/html_node/Aligned-Memory-Blocks.html),其中提到The function memalign works by allocating a somewhat larger block.我想知道那个"稍大的块"的确切值。

逻辑上认为所需的额外内存应该等于所需的对齐值。但我不确定是否有优化

Posix是一个标准的,而不是一个特定的代码集,但是我们可以看看libc中的一个例子。

这是posix_memalign()在该实现中最初分配的值。

mem = malloc (size + 2 * alignment);

用这个漂亮的ASCII插图。

    /*
      ______________________ TOTAL _________________________
     /                                                      
    +---------------+-------------------------+--------------+
    |               |                         |              |
    +---------------+-------------------------+--------------+
    ____ INIT ____/ ______ RETURNED _______/ ____ END ___/
   */

然后将分配两端未使用的存储返回给堆

这意味着碎片可能会变得更糟,尽管使用的堆内存是相同的