gpt4 book ai didi

c++ - 如何包装 posix_memalign(在 mac 上编译旧代码库)?

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

我正在尝试在 mac 上编译一个工具包。它引用了 malloc.h 的 memalign 函数,但我能找到的唯一用于 mac 的关闭函数是 posix_memalign。所以我试图将 posix_memalign 包装成看起来像 memalign。

我对如何做到这一点感到有点困惑(因为 void* 和 void** 指针):

posix_memalign 的签名是

int posix_memalign(void **memptr, size_t alignment, size_t size); 

memalign 的签名是:

void *memalign(size_t blocksize, size_t bytes);

非常感谢任何指点。 (蹩脚的双关语意外!:)

谢谢

最佳答案

类似于:

void *memalign(size_t blocksize, size_t bytes) {
void *result=0;
posix_memalign(&result, blocksize, bytes);
return result;
}

&result 会给你一个 void** 来调用 posix_memalign 然后你可以像 memalign 那样返回结果。

需要注意的一点:这与行为不太匹配 - memalign 通过 errno 返回错误,但是 posix_memalign 将它们作为 int 返回> 并且不触及 errno。您应该确保仍然以某种方式适本地处理错误。

关于c++ - 如何包装 posix_memalign(在 mac 上编译旧代码库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11765300/

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