posix_memalign()占用多少额外内存?
how much extra memory does posix_memalign() take?
我正试图决定是否应该使用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 ___/
*/
然后将分配两端未使用的存储返回给堆。
这意味着碎片可能会变得更糟,尽管使用的堆内存是相同的
相关文章:
- 必须为 C++20 协程帧保留多少内存?
- 堆栈上的参考用途有多少内存
- 指针数组中将有多少内存分配
- 一个 Excel XLL 插件可以有多少内存?
- 在C 中存储对对象的引用需要多少内存
- 对象指针如何知道要删除多少内存
- 使用犰狳线性代数包存储矩阵需要多少内存
- std::vector-他将分配多少内存(在重新分配期间)
- 一个C++指针使用多少内存
- x64 进程可以在 4GB RAM 上占用多少内存
- 计算出一个程序(规划中)需要多少内存
- C/C++ 程序正在使用多少内存
- 哪些数据结构正在使用多少内存
- 表示一个地址需要多少内存
- 了解我有多少内存可用于一个动态向量c++
- 我怎么能看到我的程序消耗了多少内存
- 在x64中,我们可以通过malloc()获得多少内存
- 是否有一种方法可以测量特定函数从堆栈中消耗了多少内存?
- 在c++中,枚举数据类型消耗多少内存
- 对象消耗了多少内存