3.12.9 omp_aligned_calloc – Allocate aligned nullified memory with an allocator

Description:

Allocate zero-initialized memory with the specified allocator, which can either be a predefined allocator, an allocator handle or omp_null_allocator. If the allocators is omp_null_allocator, the allocator specified by the def-allocator-var ICV is used. The to-be allocated memory is for an array with nmemb elements, each having a size of size bytes. Both nmemb and size must be nonnegative numbers; if either of them is zero, omp_aligned_calloc will return a null pointer. alignment must be a positive power of two and size must be a multiple of the alignment; the alignment will be at least the maximal value required by alignment trait of the allocator and the value of the passed alignment argument. If successful, a pointer to the zero-initialized allocated memory is returned, otherwise the fallback trait of the allocator determines the behavior.

In target regions, either the dynamic_allocators clause must appear on a requires directive in the same compilation unit – or the allocator argument may only be a constant expression with the value of one of the predefined allocators and may not be omp_null_allocator.

Memory allocated by omp_aligned_calloc must be freed using omp_free.

C:
Prototype:void* omp_aligned_calloc(size_t nmemb, size_t size,
omp_allocator_handle_t allocator)
C++:
Prototype:void* omp_aligned_calloc(size_t nmemb, size_t size,
omp_allocator_handle_t allocator=omp_null_allocator)
Fortran:
Interface:type(c_ptr) function omp_aligned_calloc(nmemb, size, allocator) bind(C)
use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
integer (c_size_t), value :: nmemb, size
integer (omp_allocator_handle_kind), value :: allocator
See also:

OMP_ALLOCATOR – Set the default allocator, Memory allocation, omp_set_default_allocator – Set the default allocator, omp_free – Freeing memory allocated with OpenMP routines, omp_init_allocator – Create an allocator

Reference:

OpenMP specification v5.1, Section 3.13.8