2010-07-02 102 views

回答

6

在Python中,str是一个对象,所以不能保证它在内存中看起来像什么。可能它包含更多的信息,比如字符串的长度。在你的情况下,这个“元数据”的大小显然是20个字节。

可能,对象本身甚至不包含实际的字符串,而是一个指向它的指针。如果是这样的话,在你的情况下,实际的字符串恰好位于对象之后的20个字节。

无论哪种方式,这是一个实现细节。这些行为在任何严肃的代码中都不应该依赖。没问题。

+1

没错。在Python 2.6中,元数据由以下部分组成:(1)指向对象类型的指针,(2)引用计数,(3)字符串的大小,(4)对象散列的缓存值,以及)一个表示该字符串是否被禁止的标志。每个字段(在32位机器上)都有4个字节,这说明了20字节的偏移量。 – 2010-07-02 11:31:03

+0

然后有什么办法来访问一个字符串的内存? – zhanwu 2010-07-02 11:34:00

+0

@Mark Dickinson,如果我做了20字节的偏移,我总是可以拥有缓冲区? 它不只是20次为我工作一次,接下来它不会,对不对? – zhanwu 2010-07-02 11:50:54

相关问题