FastLED 3.10.8
Loading...
Searching...
No Matches

◆ aligned_alloc()

void * fl::libc_impl::aligned_alloc ( fl::size_t alignment,
fl::size_t size )

Definition at line 61 of file cstdlib.cpp.hpp.

61 {
62#if defined(FL_IS_AVR) || defined(FL_IS_ESP8266) || defined(FL_IS_ARM) || \
63 defined(FL_IS_APOLLO3) || defined(FL_IS_CI13XX)
64 // Many bare-metal toolchains (newlib-nano on STM32, nRF52, SAMD, RP2040,
65 // Teensy, etc.) ship an aligned_alloc that internally calls
66 // posix_memalign, which doesn't exist on bare-metal and causes an
67 // "undefined reference to `posix_memalign'" link error.
68 return detail::aligned_alloc_via_malloc(alignment, size);
69#elif defined(FL_IS_WIN)
70 return ::_aligned_malloc(size, alignment);
71#elif defined(FL_IS_ESP32) && !ESP_IDF_VERSION_4_OR_HIGHER
72 // ESP-IDF 3.x toolchain (GCC 5.2 / newlib) does not provide
73 // ::aligned_alloc. Fall back to plain malloc.
74 (void)alignment;
75 return ::malloc(size);
76#else
77 fl::size_t aligned_size = (size + alignment - 1) & ~(alignment - 1);
78 return ::aligned_alloc(alignment, aligned_size);
79#endif
80}
void * aligned_alloc_via_malloc(fl::size_t alignment, fl::size_t size) FL_NO_EXCEPT
Portable over-allocate-and-align used by aligned_alloc on bare-metal targets; free only with aligned_...
__SIZE_TYPE__ size_t
Definition s16x16x4.h:16

References fl::detail::aligned_alloc_via_malloc(), and fl::FL_NO_EXCEPT.

Referenced by fl::aligned_alloc().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: