goto語句可釋放資源避免記憶體洩漏

2021-06-21 04:31:45 字數 685 閱讀 2181

程式異常判斷時,有問題,往往會使用return; ,雖然後面的程式執行過程被跳過了,但是後面的資源釋放的語句也被跳過了。

在資源釋放的語句之前加個名稱(比如mylocation: ),goto mylocation; 語句直接跳過後面的語句,直接跳轉到mylocation位置,執行資源釋放的語句。

執行效果類似於return; 語句,但是return; 語句直接返回,後面的資源釋放的語句將不會被執行。

#include "stdafx.h"

#include #include using namespace std;

void func(char* strname)

for (int i=0;i<100; i++) }

fclose(fd);

}int main()

使用goto語句後

#include "stdafx.h"

#include #include using namespace std;

void func(char* strname)

for (int i=0;i<100; i++) }

mylocation:

fclose(fd);//釋放資源

}int main()

c c 函式資源釋放時避免goto的方法

開發c c 模組時,因為很多記憶體資源都需要自己釋放,為了統一乙個地方釋放資源通常用goto標籤在函式退出時釋放資源,好處是資源統一釋放,不會因為在提前return時分別釋放資源導致以後修改 遺漏釋放某些資源導致死鎖或者記憶體洩漏。以下是goto模式 void goto function snpri...

goto對資源的釋放問題的解決

q 一塊 中有大於1的資源的分配時,很容易造成跳過資源的釋放 從而導致資源的洩露。a 利用goto語句的跳轉特點可以一定程度上解決這個問題 example file f1 open if null f1 goto error1 file f2 open if null f2 goto error2 ...

關於資源保護與記憶體釋放問題

今天開始決定看看這方面的問題,現在罈子裡搜搜。在找找其它資料 1。tstrings 必須手工釋放 free tstringlist 在堆裡分配記憶體,沒有擁有者,所以沒有幫她釋放的類 2.關於form釋放問題 要徹底釋放窗體,光close是不夠的。一般需在onclose事件中寫action cafr...