在原生的编译器中,如果进行如下定义
a=1000
b=1000
print id(a),id(b)
会发现,两个的结果是不同的。id()是用来查看对象的内存地址的,如果我们定义大量的int变量,就有了内存溢出的可能性。

查了下,python对于小整数对象,[-5, 257),是预分配内存地址的。如果超出这个范围则使用通用的缓冲池,对于大整数则有PyIntBlock,用来作缓冲池。所以出现了我们上述的现象。

对int类变量值相同的情况,如果使用a=b=1000来定义,id(a)和id(b)的内存地址就是同一个了,可以一定程度上降低溢出的可能。

非原生的编译器中,貌似对上述情况进行过优化。在eclipse中测试,同样值,通常都是同一个内存地址。

自学,最痛苦的就是坚持!

本文固定链接: http://www.js-code.com/python/python_48159.html