[Python-Dev] Memory management question

Guido van Rossum guido@digicool.com
Fri, 27 Apr 2001 10:42:50 -0500


> I have tracked it down to the following sample, which does also not
> work. In the debug version on windows, the PyObject_REALLOC
> fails with an assertion-error: _CrtIsValidHeapPointer(pUserData)
> 
>  op = PyObject_NEW(PyClassObject, &PyClass_Type);
>  op = PyObject_REALLOC(op, sizeof(PyClassObject) + 20);
> 
> Should the above work or am I doing something wrong?

Probably this doesn't work because of the GC header.  The 'op' pointer
does not point to the start of the allocated memory block.
PyObject_NEW and friends know about this, but PyObject_REALLOC
doesn't.  That's what the assertion is trying to tell you.

--Guido van Rossum (home page: http://www.python.org/~guido/)