Re: [問題]關於陣列字串回傳主程式的問題

看板C_and_CPP作者 (^____^)時間5年前 (2018/06/25 02:05), 編輯推噓2(208)
留言10則, 5人參與, 5年前最新討論串3/3 (看更多)
借串發問 有什麼情況下會在 function 裏面跟系統要空間給外面的用呢? 在我的想法裏面,每個function 負責自己的行為, 頂多要了解自己呼叫的function 會有什麼東西 所以我會覺得function 要為了caller處理事情是一件很奇怪的事情 這裡的情況指的是 function 內部要為了caller 可以拿到東西而malloc 如果一開始就在參數那邊有需要caller先給pointer 就不是我指的 (這感覺像是請function幫我塞東西到 pointer,而不是function處理caller的問題) 有什麼情況下會需要這樣做呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.172.56 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1529863510.A.4C7.html

06/25 05:33, 5年前 , 1F
WinApi幾乎都是,處理Handle都是這模式的
06/25 05:33, 1F

06/25 09:40, 5年前 , 2F
A *a = new A();<=這個就是了 只是C++從入門開始就會跟
06/25 09:40, 2F

06/25 09:41, 5年前 , 3F
你說它包含malloc在做的事 使用完必須做delete
06/25 09:41, 3F

06/25 09:43, 5年前 , 4F
另一個更明顯的例子是fopen和fclose
06/25 09:43, 4F

06/25 10:11, 5年前 , 5F
其實大家說的都沒錯,caller需要free memory是試使用情
06/25 10:11, 5F

06/25 10:11, 5年前 , 6F
況而定,但確實讓caller處理的事越少可以減少錯誤的發生
06/25 10:11, 6F

06/25 11:05, 5年前 , 7F
部分C stdlib實作如strtok會利用static來存state
06/25 11:05, 7F

06/25 11:06, 5年前 , 8F
這樣就避開了需要new出東西存state的問題 但是代價太大
06/25 11:06, 8F

06/25 11:06, 5年前 , 9F
比方說無法thread safe 非stateless 所以已不是主流
06/25 11:06, 9F

06/25 11:52, 5年前 , 10F
或是DLL Function回傳不固定大小的資料 就配在function內
06/25 11:52, 10F
文章代碼(AID): #1RBzrMJ7 (C_and_CPP)
文章代碼(AID): #1RBzrMJ7 (C_and_CPP)