Here is the definition of that call from ndarrayobject.h

#define PyArray_DIMS(obj) (((PyArrayObject *)(obj))->dimensions)

I believe the memory has been allocated.  It just return a pointer.

Gen

On Dec 20, 2006, at 7:43 PM, Sebastian Haase wrote:



On 12/20/06, Gennan Chen <[EMAIL PROTECTED]> wrote:
Hi!


I have problem with this function call under FC6 X86_64 for my own numpy extension


printf("\n %d %d %d", PyArray_DIM(imgi,0),PyArray_DIM(imgi, 1),PyArray_DIM(imgi,2))


it gave me


166 256 256


if I tried:


int *dim;
dim = PyArray_DIMS(imgi)
printf("\n %d %d %d", dim[0], dim[1], dim[2]);


it gave me 166 0 256


Hi -
maybe I'm dense here -
but how is this /supposed/ to work ? Is PyArray_DIMS allocating some memory that never gets freed !? I thought "tuples" in C had to always be passed into a function, so that that function could modify it, as in:

const int maxNDim = 20;
int dim[maxNDim];
PyArray_DIMS(imgi,  dim);


 What am I missing ... ?
-Sebastian

_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to