posix_memalign 应该因尺寸错误而失败吗?
should posix_memalign fail on wrong size?
我正在使用 posix_memalign
来获取一些内存对齐内存。 man pages
表示
- 大小必须是 2 的幂
- 和 sizeof(void*)
的倍数
我试过这个电话看看会发生什么
void* ptrs;
int ret = posix_memalign(&ptrs, getpagesize(), 13);
看到 return 的值为 0
,我感到很惊讶。
我通常这样称呼它作为例子
void* ptrs;
int ret = posix_memalign(&ptrs, getpagesize(), 32 * sizeof(void*));
你知道为什么会这样吗?
我在 LUbuntu 下使用 g++4.9。
manual 说
The value of alignment shall be a multiple of sizeof( void *), that is also a power of two
为了清楚起见,这里是posix_memalign
的声明
int posix_memalign(void **memptr, size_t alignment, size_t size);
您传递的 size
不是指针大小的两倍的幂。但这没关系,因为您用作 alignment 的 getpagesize()
返回的值可能是。
我没有看到 size
的任何要求,但它可能不能为负数。
我正在使用 posix_memalign
来获取一些内存对齐内存。 man pages
表示
- 大小必须是 2 的幂
- 和 sizeof(void*) 的倍数
我试过这个电话看看会发生什么
void* ptrs;
int ret = posix_memalign(&ptrs, getpagesize(), 13);
看到 return 的值为 0
,我感到很惊讶。
我通常这样称呼它作为例子
void* ptrs;
int ret = posix_memalign(&ptrs, getpagesize(), 32 * sizeof(void*));
你知道为什么会这样吗?
我在 LUbuntu 下使用 g++4.9。
manual 说
The value of alignment shall be a multiple of sizeof( void *), that is also a power of two
为了清楚起见,这里是posix_memalign
的声明int posix_memalign(void **memptr, size_t alignment, size_t size);
您传递的 size
不是指针大小的两倍的幂。但这没关系,因为您用作 alignment 的 getpagesize()
返回的值可能是。
我没有看到 size
的任何要求,但它可能不能为负数。