我正在尝试在 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/