看板 C_and_CPP 關於我們 聯絡資訊
借串發問 有什麼情況下會在 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
stupid0319: WinApi幾乎都是,處理Handle都是這模式的 06/25 05:33
sarafciel: A *a = new A();<=這個就是了 只是C++從入門開始就會跟 06/25 09:40
sarafciel: 你說它包含malloc在做的事 使用完必須做delete 06/25 09:41
sarafciel: 另一個更明顯的例子是fopen和fclose 06/25 09:43
boss0405: 其實大家說的都沒錯,caller需要free memory是試使用情 06/25 10:11
boss0405: 況而定,但確實讓caller處理的事越少可以減少錯誤的發生 06/25 10:11
Killercat: 部分C stdlib實作如strtok會利用static來存state 06/25 11:05
Killercat: 這樣就避開了需要new出東西存state的問題 但是代價太大 06/25 11:06
Killercat: 比方說無法thread safe 非stateless 所以已不是主流 06/25 11:06
flyfoxy: 或是DLL Function回傳不固定大小的資料 就配在function內 06/25 11:52