Hi,
To start with Boost, I wrote a (very simple) test_that_() function in
C/Boost with a numeric::array& as argument. I compiled a .so file
and I'm then able to seamlessly use this function from Python : that's
for the successful part...
Now I want to trace memory usage (and possible leaks) using Valgrind :
then I don't use Python anymore and decide to stay in the C world : so
I wrote a short test program in C which only includes a call to the
function in the .so :
int main(void) {
Py_Initialize();
import_array();
npy_intp dim[]={1000};
PyArrayObject* X =
(PyArrayObject*)PyArray_SimpleNew(1, dim, PyArray_FLOAT);
test_that_((numeric::array&)X);
Py_DECREF(X);
Py_Finalize();
return 0;
}
I can compile and build the executable file with no error but when I
run it : segmentation fault when I try to use PyArray_Size within the
test_that() function, which only "link" a PyArrayObject to the
numeric::array argument. The manipulation of the data seems to be OK
but problem arises with PyArray_Size.
Well, looks like the double cast (PyArrayObject -> numeric::array
-> PyArrayObject) is not valid.
Could someone confirm (or not) my (very) bad coding ?
Thanks.