五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C語音使用庫時發(fā)生內(nèi)存泄漏

2023-08-23 17:17 作者:老師明明可以靠顏值  | 我要投稿

現(xiàn)象以及解決辦法:

現(xiàn)象:使用libpng庫時,內(nèi)存一直增加。

在做一個打字練習軟件時,需要讀取很多圖片。

每次按鍵,刷新一次界面,讀取一次圖片。

刷新一定次數(shù)界面后,程序就因為內(nèi)存不足自動退出了。

經(jīng)過調(diào)試,發(fā)現(xiàn)每次按鍵,內(nèi)存消耗都在增加。

也就是說,按鍵次數(shù)越多,內(nèi)存消耗越多。

問題就出在這里。

正確的內(nèi)存消耗:按鍵那一下增加,然后就減少了。

但是我們的程序只有增加,沒有減少。

所以猜測:我們的程序缺少內(nèi)存釋放的代碼。

在添加了68至81行的代碼后,內(nèi)存消耗就正常了。

增加的這些代碼,正是內(nèi)存釋放的代碼;

png_free_data 釋放了讀取png文件所得到的圖像數(shù)據(jù)。

png_destroy_read_struct釋放了讀取png文件時所用的結(jié)構(gòu)體。

fclose釋放了讀取文件所使用的文件結(jié)構(gòu)信息。

內(nèi)存泄漏:

內(nèi)存泄漏:程序員不能繼續(xù)掌控的內(nèi)存,就是泄漏掉的內(nèi)存。png庫使用一些內(nèi)存時,會找一下些被標記為”空閑”的內(nèi)存,然后通過操作系統(tǒng)給這些內(nèi)存打上“忙”標記。如果后續(xù)多次使用png庫函數(shù)讀圖片,同時在使用完后,不給使用過的內(nèi)存打上“空閑”標記,就會造成”忙”的內(nèi)存越來越多。從而在使用N此png庫函數(shù)后,造成所有內(nèi)存都“忙”.


所以,要及時的給使用過的內(nèi)存,打上“空閑”標記。

注意到,給內(nèi)存打“空閑“標記,就需要知道內(nèi)存地址。但是我們多次使用png庫函數(shù)時,通常使用同樣的變量來知道內(nèi)存地址,比如png_read。多次使用png庫函數(shù)會造成png_read會被覆蓋。因此必須再下一次使用庫函數(shù)前,及時的將png_read對應(yīng)的內(nèi)存標記為”空閑”。

如果,我們給一些內(nèi)存打上了”忙“標簽,后來我們又弄丟了這些內(nèi)存的地址,那么程序員就無法再給這些內(nèi)存打上”空閑”的標簽了,也就無法再使用這些內(nèi)存了。


png庫的資料:

一般系統(tǒng)上應(yīng)該自動安裝了pnglib庫。

要使用此庫,程序員直接使用png.h 和png.lib 即可。

例子程序:

如果需要第一手的例程,可以去其源碼包中找,下載地址:https://sourceforge.net/projects/libpng/

操作文檔可以在這個網(wǎng)頁中找:http://www.libpng.org/pub/png/libpng.html。、

源碼中解壓后為文件夾lpng1640

lpng1640/contrib/examples/pngpixel.c 讀取像素值的例子

lpng1640/contrib/examples/pngtopng.c 讀取png圖片,并將其存儲為新的png圖片


C語音使用庫時發(fā)生內(nèi)存泄漏的評論 (共 條)

分享到微博請遵守國家法律
白河县| 双峰县| 西贡区| 肃北| 噶尔县| 沐川县| 双辽市| 桓台县| 文水县| 郧西县| 昌平区| 汕尾市| 平舆县| 璧山县| 冕宁县| 长顺县| 棋牌| 昌乐县| 开封县| 洛扎县| 三都| 桃园市| 临桂县| 华阴市| 渭南市| 沙洋县| 定安县| 荆门市| 白水县| 凉城县| 北安市| 麦盖提县| 汉中市| 忻州市| 大厂| 应用必备| 綦江县| 临漳县| 临夏市| 日照市| 本溪|