Provided by: libpmemcto-dev_1.4.1-0ubuntu1~18.04.1_amd64 bug

NAME

       pmemcto_malloc,   pmemcto_free,   pmemcto_calloc,  pmemcto_realloc  -  allocate  and  free
       persistent memory

SYNOPSIS

              #include <libpmemcto.h>

              void *pmemcto_malloc(PMEMctopool *pcp, size_t size);
              void pmemcto_free(PMEMctopool *pcp, void *ptr);
              void *pmemcto_calloc(PMEMctopool *pcp, size_t nmemb, size_t size);
              void *pmemcto_realloc(PMEMctopool *pcp, void *ptr, size_t size);

DESCRIPTION

       The pmemcto_malloc() function provides the same semantics as malloc(3),  but  operates  on
       the memory pool pcp instead of the process heap supplied by the system.  It allocates size
       bytes and returns a pointer to the allocated memory.  The memory is not  initialized.   If
       size  is  0, then pmemcto_malloc() returns either NULL, or a unique pointer value that can
       later be successfully passed to pmemcto_free().

       The pmemcto_free() function provides the same semantics as free(3), but  operates  on  the
       memory  pool  pcp instead of the process heap supplied by the system.  It frees the memory
       space  pointed  to  by  ptr,  which  must  have  been  returned  by  a  previous  call  to
       pmemcto_malloc(),  pmemcto_calloc()  or  pmemcto_realloc()  for  the  same pool of memory.
       Undefined behavior occurs if frees do not correspond to allocated  memory  from  the  same
       memory pool.  If ptr is NULL, no operation is performed.

       The  pmemcto_calloc()  function  provides the same semantics as calloc(3), but operates on
       the memory pool pcp instead of the process heap supplied  by  the  system.   It  allocates
       memory  for  an  array  of  nmemb elements of size bytes each and returns a pointer to the
       allocated  memory.   The  memory  is  set  to  zero.   If  nmemb  or  size  is   0,   then
       pmemcto_calloc()  returns  either  NULL,  or  a  unique  pointer  value  that can later be
       successfully passed to pmemcto_free().

       The pmemcto_realloc() function provides the same semantics as realloc(3), but operates  on
       the  memory  pool  pcp instead of the process heap supplied by the system.  It changes the
       size of the memory block pointed to by ptr to size bytes.  The contents will be  unchanged
       in  the range from the start of the region up to the minimum of the old and new sizes.  If
       the new size is larger than the old size, the added memory will not  be  initialized.   If
       ptr  is  NULL, then the call is equivalent to pmemcto_malloc(pcp, size), for all values of
       size; if size is equal to zero and ptr is  not  NULL,  then  the  call  is  equivalent  to
       pmemcto_free(pcp, ptr).  Unless ptr is NULL, it must have been returned by an earlier call
       to pmemcto_malloc(), pmemcto_calloc(), pmemcto_realloc() or pmemcto_aligned_alloc(3).   If
       the area pointed to was moved, a pmemcto_free(pcp, ptr) is done.

RETURN VALUE

       On  success,  pmemcto_malloc()  and  pmemcto_calloc()  functions  return  a pointer to the
       allocated memory.  If the allocation request  cannot  be  satisfied,  a  NULL  pointer  is
       returned and errno is set appropriately.

       The pmemcto_free() function returns no value.

       On success, pmemcto_realloc() function returns a pointer to the newly allocated memory, or
       NULL if it is unable to satisfy the allocation request.  If size was equal  to  0,  either
       NULL   or   a   pointer   suitable  to  be  passed  to  pmemcto_free()  is  returned.   If
       pmemcto_realloc() fails the original block is left untouched; it is not freed or moved.

ERRORS

       ENOMEM Insufficient memory available to satisfy allocation request.

NOTES

       Unlike the normal malloc(), which asks the system for additional memory when it runs  out,
       libpmemcto(7)  allocates  the size it is told to and never attempts to grow or shrink that
       memory pool.

SEE ALSO

       jemalloc(3), malloc(3), pmemcto_aligned_alloc(3), libpmemcto(7) and <http://pmem.io>