9.2 Memory Interface
The following function sets, modeled after the ANSI C standard, are
available for allocating and releasing memory from the Python heap:
- void* PyMem_Malloc (size_t n)
-
Allocates n bytes and returns a pointer of type void* to
the allocated memory, or NULL if the request fails. Requesting zero
bytes returns a non-NULL pointer.
- void* PyMem_Realloc (void *p, size_t n)
-
Resizes the memory block pointed to by p to n bytes. The
contents will be unchanged to the minimum of the old and the new
sizes. If p is NULL, the call is equivalent to
PyMem_Malloc(n); if n is equal to zero, the memory block
is resized but is not freed, and the returned pointer is non-NULL.
Unless p is NULL, it must have been returned by a previous
call to PyMem_Malloc() or PyMem_Realloc().
- void PyMem_Free (void *p)
-
Frees the memory block pointed to by p, which must have been
returned by a previous call to PyMem_Malloc() or
PyMem_Realloc(). Otherwise, or if
PyMem_Free(p) has been called before, undefined behaviour
occurs. If p is NULL, no operation is performed.
The following type-oriented macros are provided for convenience. Note
that TYPE refers to any C type.
- TYPE* PyMem_New (TYPE, size_t n)
-
Same as PyMem_Malloc(), but allocates
(n *
sizeof(TYPE))
bytes of memory. Returns a pointer cast to
TYPE*.
- TYPE* PyMem_Resize (void *p, TYPE, size_t n)
-
Same as PyMem_Realloc(), but the memory block is resized
to
(n * sizeof(TYPE))
bytes. Returns a pointer
cast to TYPE*.
- void PyMem_Del (void *p)
-
Same as PyMem_Free().
In addition, the following macro sets are provided for calling the
Python memory allocator directly, without involving the C API functions
listed above. However, note that their use does not preserve binary
compatibility accross Python versions and is therefore deprecated in
extension modules.
PyMem_MALLOC(), PyMem_REALLOC(), PyMem_FREE().
PyMem_NEW(), PyMem_RESIZE(), PyMem_DEL().
See About this document... for information on suggesting changes.