色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

哪些操作會導致Python內存溢出,怎么處理?

江奕云2年前26瀏覽0評論

你好,感謝你的提問,剛好前段時間我也遇到過Python內存溢出的情況。我把我的例子與你分享,希望對你有所幫助。

內存溢出的情況:你使用malloc或new向內存申請了一塊內存空間,但沒有用free以及delete對該塊內存進行釋放,造成程序失去了對該塊內存的控制。

我的處理辦法是:

在原生的編譯器中,如果進行如下定義

a=1000

b=1000

printid(a),id(b)

會發現,兩個的結果是不同的。id()是用來查看對象的內存地址的,如果我們定義大量的int變量,就有了內存溢出的可能性。

查了下,python對于小整數對象,[-5,257),是預分配內存地址的。如果超出這個范圍則使用通用的緩沖池,對于大整數則有PyIntBlock,用來作緩沖池。所以出現了我們上述的現象。

對int類變量值相同的情況,如果使用a=b=1000來定義,id(a)和id(b)的內存地址就是同一個了,可以一定程度上降低溢出的可能。

非原生的編譯器中,貌似對上述情況進行過優化。在eclipse中測試,同樣值,通常都是同一個內存地址。