Here is a first patch adding the following functions:
void* PyMem_RawCalloc(size_t n);
void* PyMem_Calloc(size_t n);
void* PyObject_Calloc(size_t n);
PyObject* _PyObject_GC_Calloc(size_t);
It adds the following field after malloc field to PyMemAllocator structure:
void* (*calloc) (void *ctx, size_t size);
It changes the tracemalloc module to trace "calloc" allocations, add new tests and document new functions.
The patch also contains an important change: PyType_GenericAlloc() uses calloc instead of malloc+memset(0). It may be faster, I didn't check. |