[Numpy-discussion] C-extensions to numpy - a little help is needed

Travis Oliphant oliphant.travis at ieee.org
Sun Mar 12 15:04:01 CST 2006

Mads Ipsen wrote:
> Hey,
> I am trying to understand how to write numpy extensions, in order to be
> able to do various things fast, that I need in my own apps. I have looked
> at the examples from the Numeric package, which I managed to get working
> with numpy, so I guess my questions holds for this forum.
> There's one detail, that I don't understand in the examples provided with
> the Numeric documentation, namely the use of
>     Py_DECREF(...)
> which is used in the first example but not in the last. Let me be more
> specific:
There are several problems with the example in the documentation that 
lead to memory leaks.  It
needs to be fixed. 

You are correct that


is needed before returning control back to Python.

In addition, the error-handling code (when return NULL is encountered) 
also needs to make sure that arrays that have been created get destroyed 
using Py_DECREF(...) before returning from the function.   This is often 
done using an err:  label and the goto command in C.

Then, at the error label  Py_XDECREF(...) is used which does nothing if 
the argument is NULL, but otherwise DECREF's the object (destroying it 
if it's the only reference).

So, this example is flawed.   I think that it's come up before but I 
don't recall the list discussion.  But, obviously nothing was done to 
change the documentation.


More information about the Numpy-discussion mailing list