For purposes of determining the existence of data races, the library versions
of
operator new, user replacement versions of global
operator new,
the C standard library functions
aligned_alloc,
calloc, and
malloc,
the library
versions of
operator delete, user replacement
versions of
operator delete, the C standard library function
free, and the C standard library function
realloc shall not
introduce a data race (
[res.on.data.races])
. Calls to these functions that allocate or deallocate a particular unit
of storage shall occur in a single total order, and each such deallocation call
shall happen before (
[intro.multithread]) the next allocation (if any) in
this order
.