[C++-sig] create boost array from a Numpy PyArray without copying data?

Sebastian Walter walter at mathematik.hu-berlin.de
Fri Jan 23 10:44:43 CET 2009

Hash: SHA1

Hey, thanks for your replies: they helped a lot.

Ravi schrieb:
> On Thursday 22 January 2009 05:51:20 Sebastian Walter wrote:
>> In my above case I know that *x won't be deleted because it is global,
>> right?
> *x is not deleted since you used PyArray_SimpleNewFromData; that *x is a 
> global is irrelevant here.
>> Why exactly does the
>> *** glibc detected *** python: malloc(): memory corruption (fast):
>> 0x0817b6a1 ***
>> occur then?
> In the code you posted this time, incref() is required so that someone owns a 
> reference to the array object. What I don't know off the top of my head is 
> whether you need an incref in the constructor of A and a decref in the 
> destructor of A.
This is also something I wondered about.
I guess it's better incref/decref them to be on the save side, right?
>> And is there a way to get the refcount of an object within Python? I'd
>> like to test if the refcount is correct.
> sys.getrefcount(obj)

Good to know. When I run
- ------------------- test.py ----------------
from _test import *
import sys

def test_my_array():
	a = A()
	print 'a.my_array=',a.my_array
	print 'sys.getrefcount(a)=',sys.getrefcount(a)
	print 'sys.getrefcount(a.my_array)=',sys.getrefcount(a.my_array)

if __name__ == "__main__":

- ------------ end test.py -------------
I get the output

- ----------- output -------------

walter at wronski$ python test.py
a.my_array= [ 1.  2.  3.]
sys.getrefcount(a)= 2
sys.getrefcount(a.my_array)= 2

- ----------- end output --------

Ermm, is that good?
I expected that the refcount would be 1 and not 2.

> Regards,
> Ravi
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig at python.org
> http://mail.python.org/mailman/listinfo/cplusplus-sig

Version: GnuPG v2.0.4-svn0 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org


More information about the Cplusplus-sig mailing list