gpt4 book ai didi

c++ - Windows 中 posix_memalign 的正确替代品是什么?

转载 作者:可可西里 更新时间:2023-11-01 14:39:41 35 4
gpt4 key购买 nike

我目前正在尝试在 Windows 中构建 word2vec。但是 posix_memalign() 函数有问题。大家都建议用_aligned_malloc(),只是参数个数不一样。那么 Windows 中 posix_memalign() 的最佳等价物是什么?

最佳答案

谢谢大家。根据我喜欢的一些存储库中的代码和您的建议,我成功地构建了 EXE。这是我使用的代码:

#ifdef _WIN32
static int check_align(size_t align)
{
for (size_t i = sizeof(void *); i != 0; i *= 2)
if (align == i)
return 0;
return EINVAL;
}

int posix_memalign(void **ptr, size_t align, size_t size)
{
if (check_align(align))
return EINVAL;

int saved_errno = errno;
void *p = _aligned_malloc(size, align);
if (p == NULL)
{
errno = saved_errno;
return ENOMEM;
}

*ptr = p;
return 0;
}
#endif

更新:

看起来@alk 提出了这个问题的最佳解决方案:

#define posix_memalign(p, a, s) (((*(p)) = _aligned_malloc((s), (a))), *(p) ?0 :errno)

关于c++ - Windows 中 posix_memalign 的正确替代品是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33696092/

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