很困惑,我目前正在写一个多进程程序,但是遇到一个令我纠结的问题:我在程序运行中调用某个函数分配了一块堆内存,这块内存只分配一次且程序运行时一直需要用到,也就意味着这段内存是没必要释放的,程序结束自动回收
所以纠结在:那我还需要自己写释放内存的代码吗? 如果不写, 会不会给人一种不靠谱的感觉? 可写了会导致代码不必要的冗杂(我写的是多进程程序,意味着所有子进程都得释放,父进程也得释放)。
你们觉得有没有手动写释放代码的必要?
###需要写。
有一个概念叫技术债,也就是说为了图快而落下的问题堆积起来,你迟早要还的。^ ^
c/c++中申请的内存需要手动释放,或者使用raii/智能指针,不释放会造成内存泄露。
虽然你现在的程序很简单,也知道进程退出后,操作系统会回收,但是程序不是一成不变的,当需要扩展功能或者代码重构的时候,这个申请内存可能就不是一次性的,当进入一个程序的循环或者用户多次调用的时候,就会出现可怕的内存泄露,当出现问题的时候,查起来也是相当麻烦的,相比之下,多写一个手动释放的代码就在编码前期就能把bug扼杀在摇篮里。
代码不能只追求功能性,代码质量更多的讲求可阅读,可维护,可扩展以及健壮性。
好的习惯和严格要求是进步的基础。
对你写下的代码充满热情和足够的敬畏。
楼主的问题工作中遇到过,虽然这片内存在程序运行过程中一直用到,主进程退出后自动释放,程序中不处理释放看也没啥问题,但从编程规范和习惯上看,最好还是把手动释放的工作写上,如果有Coverity代码扫描工具检测的话,会有提示错误的。
###你可以写一个简要的追踪程序,追踪这块内存区域的使用情况,留个日志,日后分析日志来分析多次运行内存使用是否有问题或不妥当之处。