<html>
<head>
<style>
P
{
margin:0px;
padding:0px
}
body
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body>&gt;&gt;Matt Knox wrote:<BR>&gt;<BR>&gt;&gt; Hi there. I'm in the unfortunate situation of trying to track down a <BR>&gt;&gt; memory error in someone elses code, and to make matters worse I don't <BR>&gt;&gt; really know jack squat about C programming. The problem seems to arise <BR>&gt;&gt; when several numpy arrays are created from C arrays in the C api and <BR>&gt;&gt; returned to python, and then trying to print out or cast to a string <BR>&gt;&gt; the resulting array. I think the problem may be happening due to the <BR>&gt;&gt; following chunk of code:<BR>&gt;&gt; {<BR>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PyObject* temp = PyArray_SimpleNewFromData(1, &amp;numobjs, typeNum, <BR>&gt;&gt; dbValues);<BR>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PyObject* temp2 = PyArray_FromArray((PyArrayObject*)temp, <BR>&gt;&gt; ((PyArrayObject*)temp)-&gt;descr, DEFAULT_FLAGS | ENSURECOPY);<BR>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Py_DECREF(temp);<BR>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PyDict_SetItemString(returnVal, "data", temp2);<BR>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Py_DECREF(temp2);<BR>&gt;&gt; }<BR>&gt;&gt;&nbsp; <BR>&gt;&gt; Lets assume that all my other inputs up this point are fine and that <BR>&gt;&gt; numobjs, typeNum, and dbValues are fine. Is their anything obviously <BR>&gt;&gt; wrong with the above chunk of code? or does it appear ok? Ultimately <BR>&gt;&gt; the dictionary "returnVal" is returned by the function this code came <BR>&gt;&gt; from, and everything else is discarded. Any help is very greatly <BR>&gt;&gt; appreciated. Thanks in advance,<BR>
&gt; You didn't indicate what kind of trouble you are having.<BR>&gt;<BR>&gt; First of all, this is kind of odd style.&nbsp; Why is a new array created <BR>&gt; from a data-pointer and then copied using PyArray_FromArray (the <BR>&gt; ENSURECOPY flag will give you a copy)?&nbsp; Using<BR>&gt;<BR>&gt; temp2 = PyArray_Copy(temp)<BR>&gt;<BR>&gt; seems simpler.&nbsp;&nbsp; This will also avoid the reference-count problem that <BR>&gt; is currently happening in the PyArray_FromArray call on the descr <BR>&gt; structure.&nbsp;&nbsp;&nbsp; Any array-creation function that takes a descr structure <BR>&gt; "steals" a reference to it, so you need to increment the reference count <BR>&gt; if you are passing an unowned reference to a -&gt;descr structure.<BR>&gt;<BR>&gt; -Travis<BR>
&nbsp;<BR>
Sorry. Yeah, the problem was the interpreter crashing on exit, which after<BR>your response definitely seems like it was a reference count issue. I<BR>changed the PyArray_FromArray call to be PyArray_Copy and it seems to work<BR>fine. Thank you very much!<BR>
&nbsp;<BR>
Love the numpy stuff (when I can stay in the python world and not mess with<BR>the C stuff :) ). Keep up the great work!<BR>
&nbsp;<BR>
- Matt<BR><BR><br /><hr />Be one of the first to try  <a href='http://ideas.live.com/programpage.aspx?versionId=5d21c51a-b161-4314-9b0e-4911fb2b2e6d' target='_new'>Windows Live Mail.</a></body>
</html>