我正在使用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。
最佳答案
manual说
要清楚,这是posix_memalign的声明
int posix_memalign(void **memptr, size_t alignment, size_t size);
您传递的
size
不是指针大小的两倍的幂。但这没关系,因为您用作对齐方式的getpagesize()
返回的值可能是。我没有看到对
size
的任何要求,但是它一定不能为负。关于c++ - posix_memalign是否应该在错误的大小上失败?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29169129/