как заменить posix_memalign на солярис 10 - PullRequest
0 голосов
/ 01 октября 2018

У меня есть следующий код, который является частью библиотеки CRFsuite.Я создал оболочку R для этой библиотеки, но в Solaris 10 установка не удалась из-за того, что posix_memalign не определен в Solaris 10. Как нужно изменить следующий код (часть https://github.com/bnosac/crfsuite/blob/master/src/crf/src/vecmath.h))для правильной компиляции в Solaris 10? ошибка установки FYI показана здесь

#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

Я пробовал использовать некоторые исправления, которые доступны здесь , нос треском провалился. Надеюсь, ты сможешь помочь.

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете использовать 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 
 ... 
...