posix_memalign,malloc和calloc与lli解释器有问题

时间:2017-07-31 00:11:19

标签: c malloc clang llvm

我使用polybench内核。在polybench.c中,代码有如下行:

  int ret = posix_memalign (&new, 32, num);

此行使lli解释器出现问题。我尝试使用malloc,但我有同样的错误

LLVM ERROR: Tried to execute an unknown external function: posix_memalign

在没有此问题的情况下是否可以使用其他功能?

1 个答案:

答案 0 :(得分:0)

听到posix_memalign()被标准化为POSIX的一部分而不是标准C的一部分,您不会感到惊讶。因此,提供该功能不是符合C实现的要求。另一方面,作为POSIX的一部分, 广泛可用。

malloc()承诺为任何类型的对象返回一个指向内存的指针。我不确定你为什么要确保更强的对齐要求,但你最好的选择是aligned_alloc()功能,这是自C2011以来的标准C.如果您的C库符合C2011,那么您可以用

替换posix_memalign()来电
#include <stdlib.h>
#include <errno.h>

// ...

new = aligned_alloc(32, num);
int ret = (new ? 0 : errno);

如果您还没有aligned_alloc(),那么您的实施可能会提供其他选择,但它们都不是标准的。