API/C memory mananegemnt problem
Marco Fumana
fumana at lambrate.inaf.it
Fri Mar 10 04:42:53 EST 2006
Thank for your help.
I have try to follow your suggestion but I seem to fail.
Now my C-module (call it C_Core) code is:
***********************************************
/* create_list function */
int size=10000000;
output=(double *) calloc(size, sizeof(double));
py_output=PyList_New(0);
for(i=0; i<size; i++){
tmp=PyFloat_FromDouble(output[i]);
PyList_Append(py_output, tmp);
Py_DECREF(tmp); // append adds a reference
}
free(outout);
return py_output;
**********************************************
with del statement all memory is relased, but I have a malformed list.
In python shell:
# Call C function an create a list
alfa=C_Core.create_list()
# check the list
len(alfa)
10000000
# OK
alfa[1]
Segmentation fault
On the other size your last option with
PyList_SET_ITEM(py_output, tmp) statement
is quick, but I have still memory problem.
Any idea?
Thank a lot
marco
More information about the Python-list
mailing list