久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2468|回復: 0
打印 上一主題 下一主題
收起左側

內存漏洞(leak)

[復制鏈接]
跳轉到指定樓層
樓主
ID:108615 發表于 2016-3-13 17:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


如何檢測C語言中的內存漏洞(leak)?在動態分配的內存單元(即由函數malloc()或ealloc()分
配的內存單元)不再使用卻沒有被釋放的情況下,會出現內存漏洞。未釋放內存單元本身并
不是一種錯誤,編譯程序不會因此報告出錯,程序也不會因此而立即崩潰。但是,如果不
再使用而又沒有被釋放的內存單元越來越多,程序所能使用的內存空間就越來越小。最終
,當程序試圖要求分配內存時,就會發現已經沒有可用的內存空間。這時,尤其是當程序
員沒有考慮到內存分配失敗的可能性時,程序的運行就會出現異常現象。
內存漏洞是最難檢測的錯誤之一,同時也是最危險的錯誤。導致這個問題的編程錯誤很可
能出現在程序的開始部分,但只有當程序奠名其妙地使用完內存后,這個問題才會暴露出
來。此時去檢查當前那條導致內存分配失敗的語句是無濟于事的,因為那些分配了內存卻
未能按時釋放內存的代碼可能在程序的其它地方。遺憾的是C語言并沒有為檢測或修復內
存漏洞提供現成的方法。除非使用提供這種功能的商業軟件包,否則,程序員就需要以很
大的耐心和精力去檢測和修復內存漏洞。最好的辦法是在編寫程序時就充分考慮到內存漏
洞的可能性,并小心謹慎地處理這種可能性。導致內存漏洞的最簡單的也是最常見的原因
是忘記釋放分配給臨時緩沖區的內存空間,請看下述程序段:

#include<stdio.h>
#include<stdlib.h>
/**Say hello to the user's and put the user's name in  UPPERCASE.*/
void   SayHi(char*name)
{
char* UpName;
int a;
UpName=malloc(strlen(name)+1);
/*Allocate  space  for  the  name*/
for(a=0;a<strlen(name);++a)
UpName[a]=toupper(name[a]);
UpName[a]='\0'i
printf("Hello,%si\n",UpName);
}
int main()
{
SayHi("Dave");
return(0);
}
這段程序中的問題是顯而易見的——它為存儲使用大寫字母的名字分配了臨時空間,但從
未釋放這些空間。為了保證永遠不發生類似的情況,你可以采用這樣的方法:在分配內存
的每條語句后加上相應的free語句,然后把使用這些臨時內存的語句插到這兩條語句之間。
只要在程序中分配和釋放內存的語句之間沒有break,continue或goto語句,這種方法就
能保證每次分配的空間在使用完后就被釋放掉。上述方法相當繁瑣,并且不能完全避免內
存漏洞的出現,因為在實際編程中,所分配的內存空間的使用時間往往是不能預測的。此
外,如果操作或刪除內存空間的程序段有錯誤,也會出現內存漏洞。例如,在刪除鏈表的
過程中,最后一個結點可能會丟失,或者一個指向內存空間的指針可能會被改寫。解決這
類問題的辦法只能是小心謹慎地編寫程序,或者象前面提到的那樣使用相應的軟件包,或
者利用語言的擴展功能。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品久久久久久 | 51ⅴ精品国产91久久久久久 | 中文字幕第5页 | 亚洲国产精品久久久久 | 亚洲乱码一区二区三区在线观看 | 手机看片169 | 精品视频99| 国外成人免费视频 | 亚洲一区二区三区高清 | 久青草影院 | 国产精品精品久久久 | 国产成人在线视频播放 | 亚洲精品二区 | 国产精品日韩高清伦字幕搜索 | 国产在线精品一区二区三区 | 欧美一区二区三区 | 亚洲国产网址 | 酒色成人网 | 亚洲精品久久嫩草网站秘色 | 日本精品视频 | 自拍偷拍亚洲一区 | 亚洲国产成人精品久久久国产成人一区 | aaaaaaa片毛片免费观看 | 国产精品一区二区视频 | 日韩av在线一区二区三区 | 在线观看午夜视频 | 日韩在线播放第一页 | 成年人免费网站 | 日本黄色一级视频 | 天堂av影院 | 国产精品视频一二三区 | 欧美精品一区三区 | 日本一区二区三区在线观看 | 大学生a级毛片免费视频 | 国产精品不卡 | 久久久久久久一区 | 三a毛片 | 国产99视频精品免费播放照片 | 亚洲精品一区中文字幕乱码 | 欧美a∨ | 精品久久香蕉国产线看观看亚洲 |