15#if defined(_WIN32) || defined(__CYGWIN__)
20static inline void* aligned_alloc_xp(
size_t alignment,
size_t size) {
22 if ((alignment & (alignment - 1)) != 0 || alignment <
sizeof(
void*)) {
26#if defined(_WIN32) || defined(__CYGWIN__)
27 return _aligned_malloc(size, alignment);
31#if __STDC_VERSION__ >= 201112L
32 return aligned_alloc(alignment, size);
36 if (posix_memalign(&ptr, alignment, size) != 0) {
45static inline void aligned_free_xp(
void* ptr) {
46#if defined(_WIN32) || defined(__CYGWIN__)
53#define ALIGNED_ALLOC(alignment, size) aligned_alloc_xp(alignment, size)
54#define ALIGNED_FREE(ptr) aligned_free_xp(ptr)