gpt4 book ai didi

c++ - posix_memalign 应该因尺寸错误而失败吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:08 25 4
gpt4 key购买 nike

我正在使用 posix_memalign 来获取一些内存对齐内存。 手册页

  1. 大小必须是2的幂
  2. 和 sizeof(void*) 的倍数

我试过这个调用看看会发生什么

 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

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 不是指针大小的两倍的幂。但这没关系,因为您用作对齐getpagesize() 返回的值可能是。

我没有看到对 size 有任何要求,但它可能不能为负数。

关于c++ - posix_memalign 应该因尺寸错误而失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29169129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com