写C C++ 语言时候,如果每次申请内存就把Free内存的代码写上,是否能有效避免内存泄漏?

2022-09-14
2 阅读

这个做法是无效的,说明你对相关问题实践少,凭空想象的措施。

首先,既然程序用到堆内存,就意味着不大可能在函数结束後要释放,它要被别的函数使用,否则你直接用栈内存好了。

既然会被别的函数使用,你也不可预知被应在哪个函数中释放它,这才是问题!在不该释放的时候释放了,後面的就用了幻影数据,甚至破坏程序和数据(此内存已被挪为他用时)。

函数是反复调用的,你不知道它会被调用多少,嵌套多少层,所以不可能确定在什么时候释放相关内存。

其次,是指针会让你这种想法焦头烂额。

一块内存的地址,可以用无数指针记忆指向和使用,你free这个指针,但它的化身仍然指向这块内存,它们不知道内存已释放(这就是尽量用引用而不是用指针的原因)。

第三,频繁释放内存会造成内存碎片,而你无法归集。

分享至:
管理员

小草

专注人工智能、前沿科技领域报道,致力于为读者带来最新、最深度的科技资讯。

评论 (0)

当前用户头像