|  |  |  | Python/C API Reference Manual |  |  |  | 
 
 
9.2 Memory Interface 
The following function sets, modeled after the ANSI C standard,
but specifying  behavior when requesting zero bytes,
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 distinct non-NULL pointer if
  possible, as if PyMem_Malloc(1) had been called instead.
  The memory will not have been initialized in any way.
| 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); else 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().
- 
  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
  behavior 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*.  The memory will not have been initialized in
  any way.
| 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*.
- 
  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 across Python versions and is therefore deprecated in
extension modules.
PyMem_MALLOC(), PyMem_REALLOC(), PyMem_FREE().
PyMem_NEW(), PyMem_RESIZE(), PyMem_DEL().
Release 2.4.4, documentation updated on 18 October 2006.
 
See About this document... for information on suggesting changes.