ctypes - python2.7.3 vs python3.2.3
John Gordon
gordon at panix.com
Fri Sep 7 15:04:13 EDT 2012
In <9a74$503e88dd$546bb230$30836 at cache80.multikabel.net> Jan Kuiken <jan.kuiken at quicknet.nl> writes:
> >> uint32_t myfunction (char ** _mydata)
> >> {
> >> char mydata[16];
> >
> >> strcpy(mydata, "Hello Dude!");
> >
> >> *_mydata = mydata;
> >
> >> return 0;
> >> }
> >
> > mydata is an auto variable, which goes out of scope when myfunction()
> > exits. *_mydata ends up pointing to garbage.
> I'm not completely sure, but i think this can be solved by using:
> static char mydata[16];
That will solve the immediate problem, however it makes myfunction()
non-reentrant.
> (Btw.: I don't know why you use char ** _mydata, i would use
> char * _mydata, but then again, i'm not very familiar with
> ctypes)
He uses char **_mydata because he wants myfunction()'s caller to see the
new value of _mydata, which it wouldn't if it were just char *_mydata.
--
John Gordon A is for Amy, who fell down the stairs
gordon at panix.com B is for Basil, assaulted by bears
-- Edward Gorey, "The Gashlycrumb Tinies"
More information about the Python-list
mailing list