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

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

分享到微博請遵守國家法律
扬中市| 共和县| 谢通门县| 海门市| 科技| 克拉玛依市| 漠河县| 宝坻区| 曲沃县| 聂拉木县| 永清县| 县级市| 社会| 青浦区| 香港| 武安市| 古浪县| 商洛市| 哈巴河县| 新绛县| 开平市| 临湘市| 甘谷县| 思南县| 霍林郭勒市| 新安县| 雷波县| 虞城县| 治多县| 商丘市| 开远市| 泸定县| 海宁市| 甘肃省| 广东省| 通河县| 安图县| 鱼台县| 泊头市| 巩义市| 栖霞市|