最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

分享到微博請遵守國家法律
连城县| 信宜市| 兴海县| 唐河县| 五莲县| 唐海县| 进贤县| 托克托县| 达日县| 竹溪县| 贵港市| 铁力市| 孝义市| 郎溪县| 西充县| 阿城市| 梁山县| 德令哈市| 册亨县| 肥西县| 陆丰市| 西乌珠穆沁旗| 富蕴县| 辛集市| 厦门市| 旌德县| 鸡泽县| 罗甸县| 马关县| 仁化县| 平昌县| 会泽县| 阿克陶县| 团风县| 来安县| 敖汉旗| 博客| 连州市| 黑龙江省| 乐业县| 连城县|