请注意,此文主要是针对BSD 系统的调用。
我的应用环境,
macOS Mojave
Version 10.14.6
Command Line Tools:
Xcode Version 11.3.1 (11C504)
先看一下此函数的声明信息,在使用此函数前,你需要引入头文件,#include <stdlib.h>,函数声明:
int posix_memalign(void **memptr, size_t alignment, size_t size);
下面我们来详细的了解一下此函数,
posix_memalign 函数分配 size 字节大小的内存, 分配内存的基地址大小是 alignment 大小的倍数,*memptr 指向分配的内存。
请求的 alignment 必须是 2 的幂,至少与 sizeof(void *) 一样大。
通过 posix_memalign() 分配的内存可用作后续调用 realloc(3)、reallocf(3) 和 free(3) 的参数。 (但请注意,realloc(3) 或 reallocf(3) 返回的分配不能保证保留原始对齐方式)。
请注意,
posix_memalign() 应该合理地使用,因为实现对齐约束的算法可能会导致显着的内存开销。
返回值,
如果成功则返回值 0;否则返回错误值。
错误情况,
如果出现以下情况,posix_memalign() 函数将失败:
[EINVAL] 对齐参数不是 2 的幂,至少与 sizeof(void *) 一样大。
[ENOMEM] 内存分配错误。
标准,
posix_memalign() 函数符合 IEEE Std 1003.1-2001 (``POSIX.1'')。
BSD April 9, 2008 BSD
最后,
我们通过例子进一步理解此函数,看一下我在此处的例子
https://baijiahao.baidu.com/builder/preview/s?id=1735759011872993536