国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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)存泄漏的評論 (共 條)

分享到微博請遵守國家法律
宁武县| 富平县| 津南区| 洛南县| 监利县| 紫金县| 杭锦后旗| 郸城县| 清水河县| 绍兴县| 华坪县| 烟台市| 望江县| 新沂市| 报价| 镇康县| 溧阳市| 阿拉善左旗| 龙泉市| 辉县市| 克拉玛依市| 天祝| 延津县| 凤冈县| 左云县| 临颍县| 三台县| 长泰县| 庄浪县| 麦盖提县| 上饶市| 涟源市| 娄烦县| 溆浦县| 和林格尔县| 奉节县| 三门峡市| 吕梁市| 时尚| 将乐县| 乐清市|