PyArg_Parse() & review for memory leaks
Daniel Yoo
dyoo at hkn.eecs.berkeley.edu
Sat Jun 15 02:02:51 EDT 2002
Anton Graph <""aglyportat\"@n-o.spa__mmm.yahoo dott com> wrote:
[some code cut]
: char *pstr;
: if(!PyArg_Parse(result, "s", &pstr)) { // the plug-in just
: // builds a string containing tag
: return 0;
: }
: int st=strlen(pstr);
: if(st>=len) {
: delete [] *res;
: len=st+1;
: *res = new char[len];
: }
: astrncpy(*res, pstr, len);
: Py_DECREF(result);
: return st;
: }
: do I leak pstr here? Sample code I've googled up seems similar, but I
: don't understand how does PyArg_Parse allocate enough space without
: going to the heap?
I don't believe so: PyArg_Parse()ing a string shouldn't be doing any
allocation because pstr is simply directed to the string pointer that
Python is using internally to store that String object --- no string
copying is involved.
Section 5.5 of the Python/C API document explains more about
PyArg_Parse():
http://python.org/doc/api/arg-parsing.html
Good luck to you!
More information about the Python-list
mailing list