[問題] 記憶體管理策略問題 part 1

看板C_and_CPP作者 (幻想的夢境)時間10年前 (2014/03/07 14:55), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC2010 問題(Question): 如果今天有跨函式的指標傳遞 那在副程式裡需不需要free? 程式碼(Code):(請善用置底文網頁, 記得排版) #include<stdlib.h> #include<stdio.h> #include<malloc.h> #define LEN 2 void sub_fun(int *a); int main(){ int a[LEN],i; sub_fun(a); for(i=0;i<LEN;i++) printf("a(%d) = %d\n",i,a[i]); return 0; } void sub_fun(int *a){ *(a+0) = 1; *(a+1) = 2; //free(a) <- 這邊要free嗎? } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.136.146.114

03/07 14:59, , 1F
只有 malloc 來的需要 free, 然後最好誰 malloc 誰 free
03/07 14:59, 1F

03/07 15:00, , 2F
所以: 第一, 這是陣列不需要 free;
03/07 15:00, 2F

03/07 15:00, , 3F
第二, 函式收到指標就做事就好, 要不要 free 主程式決定
03/07 15:00, 3F

03/08 22:53, , 4F
推1F,誰malloc的誰free。沒人教我,但我一直這麼做
03/08 22:53, 4F

03/08 22:54, , 5F
這樣子的做法,是否有列入規範啊?
03/08 22:54, 5F
※ 編輯: jacky1989 來自: 118.233.66.46 (03/09 04:14)
文章代碼(AID): #1J6MrB6m (C_and_CPP)