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