[C++-sig] create boost array from a Numpy PyArray without copying data?
Ravi
lists_ravi at lavabit.com
Wed Jan 21 15:33:32 CET 2009
On Wednesday 21 January 2009 03:40:00 Sebastian Walter wrote:
> Apparently I have to increase the refcount manually when I return a raw
> PyObject. So I wrote getter functions like that:
>
> PyObject* get_rhs(){
> return incref((PyObject *) _array_my_rhs);
> }
> I'm not sure that this is the way it should be done. But it solved the
> memory corruption problem.
In this case, you are essentially creating a memory leak. The returned array
will never be deleted by python since its reference count will never go to
zero. Please see http://blog.enthought.com/?p=62 for information on fixing
this issue. The code I pointed out earlier encapsulates this using a custom
deleter in C++ which can be used independently of ublas.
Regards,
Ravi
More information about the Cplusplus-sig
mailing list