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