原則上是誰動態申請記憶體,那就該由誰來進行釋放
其中乙個好處是追查是否有記憶體洩露時,可根據這個原則進行追查
使用函式進行說明:
1.第一種方式,fun函式的返回值的儲存變數,是由其呼叫方自己建立的,因此呼叫方能夠知道這個變數什麼時候使用結束,也因此由其自己進行釋放記憶體
char *string = (char*)malloc(sizeof(char) * 50);
fun(string);
free(string);
2:第二種方式,由乙個功能模組提供記憶體的管理,如:
char* create_str() ;
void free_str(char *stri);
char *string = create_str();
free_str(string);
3.下面的列子是個不好的例子,因此呼叫方並不是建立這個變數的一方,而後自己使用完後,卻需要自己手動釋放該記憶體,這樣會使呼叫方容易忘記該情況
fun() {
return (char*)malloc(sizeof(char) * 50);
char *string = fun():
free(string)
C C 程式設計 動態記憶體
在使用陣列的時候,總有乙個問題困擾著我們 陣列應該有多大?例如編寫程式求n階行列式的值,用陣列表示行列式,需如下定義 define n 10 陣列定義時方括號內必須是常量 double a n n n n二維陣列表示二階行列式 而以下定義形式則是錯誤的 c 在codeblocks下無此問題 int ...
C C 動態記憶體管理
一 c語言中動態記憶體管理方式 c語言中使用 malloc calloc realloc free進行記憶體的管理和釋放 1.malloc動態記憶體申請 int ptest int malloc 10 sizeof int 申請記憶體的方式 free 釋放 2.calloc 該函式會將申請的記憶體空...
C C 動態記憶體管理
注意malloc free new delete new delete一定要匹配使用,否則可能出現記憶體洩漏甚至崩潰的問題小結 1 兩組函式都負責動態記憶體管理 2 malloc free是c c 標準庫的函式,而new delete是c 操作符。3 malloc free只負責動態分配空間 釋放空...