Overview
Python provides specialized memory allocators for different purposes:- Raw - System allocator wrappers (no GIL required)
- Mem - Python heap (GIL required)
- Object - Python objects only
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Python memory management and allocators
void* PyMem_RawMalloc(size_t size)
void* PyMem_RawRealloc(void *ptr, size_t new_size)
void PyMem_RawFree(void *ptr)
void* PyMem_Malloc(size_t size)
void* PyMem_Realloc(void *ptr, size_t new_size)
void PyMem_Free(void *ptr)
void* PyObject_Malloc(size_t size)
void PyObject_Free(void *ptr)
PyObject_* for Python objects, not buffers!PyObject* PyErr_NoMemory(void)
void *buf = PyMem_Malloc(size);
if (buf == NULL)
return PyErr_NoMemory();
// WRONG:
void *p = PyMem_Malloc(100);
free(p); // Wrong deallocator!
// RIGHT:
void *p = PyMem_Malloc(100);
PyMem_Free(p);
