[問題] 關於 free 以及 function call的問題

看板C_and_CPP (C/C++)作者 (deji394su3 )時間16年前 (2010/06/18 19:58), 編輯推噓4(403)
留言7則, 5人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 請教一個問題,假設有 code 如下,那這樣 free是正確的嗎 ? 我在別的function calloc 一塊記憶體並且return 指向記憶體的pointer, 結果我在 main裡面 free 掉,請問這樣做是對的嗎 ? main { int * ptr ptr=function(ptr); . . . . free(ptr); /************問題在這裡,請問 這樣 free 是正確的嗎 ?**********/ } function(ptr_a) { ptr_a=calloc(個數,sizeof(int)) return ptr_a; } 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) C 有問題的code: (請善用置底文標色功能) 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.115.134

06/18 20:03, , 1F
你可以這麼做, 就目前的code來看操作上也是對的;
06/18 20:03, 1F

06/18 20:03, , 2F
但是這樣做架構上好不好, 就是另一回事了....
06/18 20:03, 2F

06/18 20:34, , 3F
不管是不是在別的func配置記憶體,都不會影響heap
06/18 20:34, 3F

06/19 11:15, , 4F
可行 不過通常如果是叫function分配的話會用function清除
06/19 11:15, 4F

06/19 11:16, , 5F
例如自己寫一個Alloc()和DeAlloc()
06/19 11:16, 5F

06/19 20:05, , 6F
這樣寫,如果自己一個禮拜回看還知道在幹嘛就沒差
06/19 20:05, 6F

06/20 03:18, , 7F
可阿 還蠻常看到的 function名稱通常叫 newxxx
06/20 03:18, 7F
文章代碼(AID): #1C6r-3Cm (C_and_CPP)
文章代碼(AID): #1C6r-3Cm (C_and_CPP)