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

作者: hakman (^____^)   2018-06-25 02:05:06
借串發問
有什麼情況下會在 function 裏面跟系統要空間給外面的用呢?
在我的想法裏面,每個function 負責自己的行為,
頂多要了解自己呼叫的function 會有什麼東西
所以我會覺得function 要為了caller處理事情是一件很奇怪的事情
這裡的情況指的是 function 內部要為了caller 可以拿到東西而malloc
如果一開始就在參數那邊有需要caller先給pointer 就不是我指的
(這感覺像是請function幫我塞東西到 pointer,而不是function處理caller的問題)
有什麼情況下會需要這樣做呢?
作者: stupid0319 (徵女友)   2018-06-25 05:33:00
WinApi幾乎都是,處理Handle都是這模式的
作者: sarafciel (Cattuz)   2018-06-25 09:40:00
A *a = new A();<=這個就是了 只是C++從入門開始就會跟你說它包含malloc在做的事 使用完必須做delete另一個更明顯的例子是fopen和fclose
作者: boss0405 (boss)   2018-06-25 10:11:00
其實大家說的都沒錯,caller需要free memory是試使用情況而定,但確實讓caller處理的事越少可以減少錯誤的發生
作者: Killercat (殺人貓™)   2018-06-25 11:05:00
部分C stdlib實作如strtok會利用static來存state這樣就避開了需要new出東西存state的問題 但是代價太大比方說無法thread safe 非stateless 所以已不是主流
作者: flyfoxy (飛狐)   2018-06-25 11:52:00
或是DLL Function回傳不固定大小的資料 就配在function內

Links booklink

Contact Us: admin [ a t ] ucptt.com