/* Memory management functions */
-/* Allocate a chunk of heap memory of given size. If request could not be
+/* Allocate a chunk of memory of given size. If request could not be
satisfied, return NULL. Otherwise, return a pointer to the allocated
memory. Memory contents are undefined.
*/
void * malloc( size_t size ) _PDCLIB_nothrow;
-/* Allocate a chunk of heap memory that is large enough to hold nmemb elements
- of the given size, and zero-initialize that memory. If request could not be
+/* Allocate a chunk of memory that is large enough to hold nmemb elements of
+ the given size, and zero-initialize that memory. If request could not be
satisfied, return NULL. Otherwise, return a pointer to the allocated
memory.
*/
void * calloc( size_t nmemb, size_t size ) _PDCLIB_nothrow;
+/* Allocate a chunk of memory of given size, with specified alignment (which
+ must be a power of two; if it is not, the next greater power of two is
+ used). If request could not be satisfied, return NULL. Otherwise, return
+ a pointer to the allocated memory.
+*/
+void * aligned_alloc( size_t alignment, size_t size ) _PDCLIB_nothrow;
+
/* De-allocate a chunk of heap memory previously allocated using malloc(),
calloc(), or realloc(), and pointed to by ptr. If ptr does not match a
pointer previously returned by the mentioned allocation functions, or
#define dlcalloc calloc\r
#define dlfree free\r
#define dlmalloc malloc\r
-#define dlmemalign memalign\r
+#define dlmemalign aligned_alloc\r
#define dlposix_memalign posix_memalign\r
#define dlrealloc realloc\r
#define dlrealloc_in_place realloc_in_place\r
*/\r
DLMALLOC_EXPORT void* dlrealloc(void*, size_t);\r
\r
+/*\r
+ memalign(size_t alignment, size_t n);\r
+ Returns a pointer to a newly allocated chunk of n bytes, aligned\r
+ in accord with the alignment argument.\r
+\r
+ The alignment argument should be a power of two. If the argument is\r
+ not a power of two, the nearest greater power is used.\r
+ 8-byte alignment is guaranteed by normal malloc calls, so don't\r
+ bother calling memalign with an argument of 8 or less.\r
+\r
+ Overreliance on memalign is a sure way to fragment space.\r
+*/\r
+DLMALLOC_EXPORT void* dlmemalign(size_t, size_t);\r
+\r
#endif\r
\r
/*\r
*/\r
DLMALLOC_EXPORT void* dlrealloc_in_place(void*, size_t);\r
\r
-/*\r
- memalign(size_t alignment, size_t n);\r
- Returns a pointer to a newly allocated chunk of n bytes, aligned\r
- in accord with the alignment argument.\r
-\r
- The alignment argument should be a power of two. If the argument is\r
- not a power of two, the nearest greater power is used.\r
- 8-byte alignment is guaranteed by normal malloc calls, so don't\r
- bother calling memalign with an argument of 8 or less.\r
-\r
- Overreliance on memalign is a sure way to fragment space.\r
-*/\r
-DLMALLOC_EXPORT void* dlmemalign(size_t, size_t);\r
-\r
/*\r
int posix_memalign(void** pp, size_t alignment, size_t n);\r
Allocates a chunk of n bytes, aligned in accord with the alignment\r