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