我使用posix_memalign
来获取内存对齐的内存。 man pages
表示
我试过这个电话看看会发生什么
void* ptrs;
int ret = posix_memalign(&ptrs, getpagesize(), 13);
我很惊讶地看到返回值为0
。
我通常以这种方式称之为
void* ptrs;
int ret = posix_memalign(&ptrs, getpagesize(), 32 * sizeof(void*));
你知道为什么会这样吗?
我在LUbuntu下使用g ++ 4.9。
答案 0 :(得分:1)
对齐的值应为sizeof(void *)的倍数,也是2的幂
要清楚,这是posix_memalign的声明
int posix_memalign(void **memptr, size_t alignment, size_t size);
您已经传递了size
,它不是指针大小的两倍。但这没关系,因为您用作对齐的getpagesize()
返回的值可能是。
我没有看到size
的任何要求,但它可能不一定是否定的。