欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

哪些操作會導(dǎo)致Python內(nèi)存溢出,怎么處理?

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

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

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

我的處理辦法是:

在原生的編譯器中,如果進(jìn)行如下定義

a=1000

b=1000

printid(a),id(b)

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

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

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

非原生的編譯器中,貌似對上述情況進(jìn)行過優(yōu)化。在eclipse中測試,同樣值,通常都是同一個(gè)內(nèi)存地址。