идентификатор valloc не найден в Windows

0

Мне нужно изменить код Mac, чтобы он работал на Windows или, по крайней мере, собирался на данный момент, но, похоже, проблема с valloc.

В нем говорится: error C3861: 'valloc': identifier not found.

Вот как это используется:

#ifndef _XOPEN_SOURCE_EXTENDED 1
#define _XOPEN_SOURCE_EXTENDED 1
#endif
#include <stdlib.h>

#include <queue>
#include "ArrayArithmetic.h"
#include "MessageObject.h"

#if __SSE__
// allocate memory aligned to 16-bytes memory boundary
#define ALLOC_ALIGNED_BUFFER(_numBytes) (float *) _mm_malloc(_numBytes, 16)
#define FREE_ALIGNED_BUFFER(_buffer) _mm_free(_buffer)
#else
// NOTE(mhroth): valloc seems to work well, but is deprecated!
#define ALLOC_ALIGNED_BUFFER(_numBytes) (float *) valloc(_numBytes)
#define FREE_ALIGNED_BUFFER(_buffer) free(_buffer)
#endif

У меня есть хороший вариант, или, по крайней мере, я так думаю. Нет, я действительно не понимаю, откуда это происходит, valloc доступен в Windows?

Я работаю над Windows 8.1 с Visual Studio 2010.

  • 1
    Вы должны пометить язык. Я думаю, C, но вы включаете <queue> .
  • 0
    «Функция valloc() выделяет размер байтов памяти и возвращает указатель на выделенную память. Выделенная память выравнивается по границе страницы». (источник) . Если выравнивание страницы важно в этом коде (и кто знает?), Вам придется написать замену.
Показать ещё 3 комментария
Теги:
malloc
identifier

1 ответ

1

Если Windows обнаружена, используйте функции _aligned_malloc/_aligned_free.

#ifdef _WIN32

#define ALLOC_ALIGNED_BUFFER(_numBytes) ((float *)_aligned_malloc (_numBytes, 16))
#define FREE_ALIGNED_BUFFER(_buffer) _aligned_free(_buffer)

#elif __SSE__
// allocate memory aligned to 16-bytes memory boundary
#define ALLOC_ALIGNED_BUFFER(_numBytes) (float *) _mm_malloc(_numBytes, 16)
#define FREE_ALIGNED_BUFFER(_buffer) _mm_free(_buffer)
#else
// NOTE(mhroth): valloc seems to work well, but is deprecated!
#define ALLOC_ALIGNED_BUFFER(_numBytes) (float *) valloc(_numBytes)
#define FREE_ALIGNED_BUFFER(_buffer) free(_buffer)
#endif

Ещё вопросы

Сообщество Overcoder
Наверх
Меню