很多書籍都會把“”goto“”當成反面教材使用,認為如果使用不當,將會造成很多意想不到的問題。但goto作為C語言的一部分,存在即合理,goto有它的缺點,也有它的優點。 缺點:
很容易把邏輯弄亂,增加理解難度,goto是可以實現無條件跳轉的,一旦跳轉,就忽略很前面很多代碼,特別是在一些邏輯復雜的地方使用,會很容易出問題。所以goto能不用就不用,特別對于新手,盡量避諱。
優點:
方便處理異常情況,特別是內存等系統資源的釋放。很多大型項目,開源項目,包括Linux內核,都會使用goto來處理異常情況。 舉個例子,以下情況,大家第一反應是沒有問題,其實是存在內存泄漏隱患的。如果變量pdate2申請失敗,則退出函數。那么問題來了, pdate 申請成功了,但沒有得到釋放,出現了內存泄漏。所以這種情況如果使用goto,就很容易解決問題。
int module_init(){ char *pdate = (char *)malloc(100); if(pdate == NULL) return -1; char *pdate2 = (char *)malloc(100); if(pdate2 == NULL) return -1; free(pdate); free(pdate2); ......}
goto實現代碼
int module_init(){ char *pdate = (char *)malloc(100); if(pdate == NULL) goto err; char *pdate2 = (char *)malloc(100); if(pdate2 == NULL) goto err; free(pdate); free(pdate2); ...... err://統一的出錯處理 if(pdate != NULL) free(pdate); if(pdate2!= NULL) free(pdate2);return-1;}另一種寫法就是分階段處理:
if(pdate == NULL)gotoerr1;...if(pdate2==NULL) goto err2; ...err1: free(pdate);err2: free(pdate2);...
總結:存在即合理,好壞取決于如何使用。
-END-
來源 | 二進制人生
原文標題:goto語句對與錯
文章出處:【微信公眾號:嵌入式ARM】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
源代碼
+關注
關注
96文章
2953瀏覽量
70329
原文標題:goto語句對與錯
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
三防漆稀釋劑替代品對比:優缺點+環保選擇 |鉻銳特實業
對比分析電能質量在線監測裝置支持的斷點續傳文件傳輸協議的優缺點
UV三防漆的優缺點大起底!是效率神器還是局限陷阱?
工業級SLC SD NAND存儲的優缺點
無線局域網的優缺點和使用要點
超級電容對比鋰電池的優缺點
商業云手機核心優缺點分析
橋式整流電路的原理、優缺點及應用場景分析
PCBA 表面處理:優缺點大揭秘,應用場景全解析
傳感器的模擬輸出和數字輸出的優缺點分析
CMOS,Bipolar,FET這三種工藝的優缺點是什么?
功率放大器的類型及優缺點是什么
壓接連接器使用裸銅線的優缺點分析?
液壓伺服系統工作原理液及優缺點
goto的優缺點
評論