百科问答小站 logo
百科问答小站 font logo



”返回在函数内malloc的内存是安全的,但是容易造成问题,最好的做法是返回传入的指针。“怎么理解? 第1页

  

user avatar   haozhi-yang-41 网友的相关建议: 
      

这句话有两重含义:

  1. 比较大众比较传统的含义就是这么干容易让外部调用者忽略掉这块内存需要释放,从而导致泄露。
  2. 更深一层更隐蔽的问题是:函数内部的malloc和外部调用者后续的free,不一定是同一个库!尤其考虑到动态库或者有可能有一些hook的时候,这种情况会更复杂(当然,一般情况下,要动malloc/free,是应该成对动的,但也不能轻易保证)。

当然,这种风险一般只存在于库的API,或者跨库调用之中,一般其它函数不一定需要这么敏感。

多说一句:基于同样的原因,跨库使用模板类,包括几乎所有的STL对象都是同样危险的,甚至风险更大点:两个库共享一个类模板,但是分别编译环境不同,甚至可能因为STL版本实现不同而导致操作逻辑甚至内存布局都发生变化。




  

相关话题

  请问指针的这些概念如何理解? 
  计算机大牛们,看C++有关书籍是不是一遍就看懂了,总感觉自己笨,有些地方需要看几遍才懂? 
  为什么大学C语言课不用linux的gcc编译器上,而是用vs呢? 
  作为计算机专业学生,最应该学习的课程前五位是什么? 
  看到一篇文章说每个程序员应该有一台MBP,那么比起Windows笔记本,MBP到底有什么优势? 
  为什么这个世界是混沌无序的,而人们发现的用于解释这个世界的原理却都是有序简洁而优美的? 
  「贪心算法」的算法思路是什么,它存在什么缺陷? 
  为什么图片反复压缩后普遍会变绿,而不是其他颜色? 
  主板四个内存槽,为什么插第一个和第四个也能组成双通道,不是只能插13或者24吗? 
  C 语言是否需要改进,甚至重新设计一门语言取代 C 语言? 

前一个讨论
特斯拉车主都怎么看待韩潮案?
下一个讨论
羽毛球童子功究竟强在哪?





© 2025-05-29 - tinynew.org. All Rights Reserved.
© 2025-05-29 - tinynew.org. 保留所有权利