C API and memory allocation
Aaron Brady
castironpi at gmail.com
Thu Dec 18 16:40:35 EST 2008
More information about the Python-list mailing list
Thu Dec 18 16:40:35 EST 2008
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Dec 18, 7:54 am, Stefan Behnel <stefan... at behnel.de> wrote: > Aaron Brady wrote: > > I see. Do I read correctly that 's' is only useful when the > > argument's position is known? > > I assume you meant "length". No, position in the argument list. Otherwise you can't change its reference count; in which case, a pointer to the string object's contents (a char*) is useless after control leaves the caller's scope. > > Otherwise you can't know its length or > > change its reference count. > > The internal representation of Python byte strings is 0 terminated, so > strlen() will work. As MRAB said, Python strings can contain null bytes, since they carry their lengths. Therefore strlen will always succeed, but isn't always right. >>> len( "abc\x00def" ) 7 'strlen' says '3'. So, with 's', you are limited to the operations preceding null bytes in the current scope (with the GIL held). I hold this is strong enough to put the burden of proof on the defenders of having 's'. What is its use case?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list