如何在 Solaris 10 上替换 posix_memalign
how to replace posix_memalign on Solaris 10
我有以下代码,它是 CRFsuite 库的一部分。我已经为该库创建了一个 R 包装器,但由于 posix_memalign
未在 Solaris 10 上定义,因此在 Solaris 10 上安装失败。
下面的代码(https://github.com/bnosac/crfsuite/blob/master/src/crf/src/vecmath.h) need to be changed in order to compile correctly on Solaris 10? FYI installation error is shown here
的一部分
#include <math.h>
#include <memory.h>
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
#include <malloc.h>
#else
#include <stdlib.h>
static inline void *_aligned_malloc(size_t size, size_t alignment)
{
void *p;
int ret = posix_memalign(&p, alignment, size);
return (ret == 0) ? p : 0;
}
static inline void _aligned_free(void *p)
{
free(p);
}
#endif
我尝试使用一些可用的修复程序 here,但失败得很惨。希望能帮到你。
您应该可以使用 memalign()
...
#elif defined __SunOS_5_10
#include <stdlib.h>
static inline void *_aligned_malloc(size_t size, size_t alignment)
{
return memalign(alignment, size)
}
static inline void _aligned_free(void *p)
{
free(p);
}
#else
...
我有以下代码,它是 CRFsuite 库的一部分。我已经为该库创建了一个 R 包装器,但由于 posix_memalign
未在 Solaris 10 上定义,因此在 Solaris 10 上安装失败。
下面的代码(https://github.com/bnosac/crfsuite/blob/master/src/crf/src/vecmath.h) need to be changed in order to compile correctly on Solaris 10? FYI installation error is shown here
#include <math.h>
#include <memory.h>
#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
#include <malloc.h>
#else
#include <stdlib.h>
static inline void *_aligned_malloc(size_t size, size_t alignment)
{
void *p;
int ret = posix_memalign(&p, alignment, size);
return (ret == 0) ? p : 0;
}
static inline void _aligned_free(void *p)
{
free(p);
}
#endif
我尝试使用一些可用的修复程序 here,但失败得很惨。希望能帮到你。
您应该可以使用 memalign()
...
#elif defined __SunOS_5_10
#include <stdlib.h>
static inline void *_aligned_malloc(size_t size, size_t alignment)
{
return memalign(alignment, size)
}
static inline void _aligned_free(void *p)
{
free(p);
}
#else
...