当你返回泄露的内存时修复内存泄漏?

Mar*_*ark 0 c++ memory-leaks memory-management

如何从漏洞本身返回的函数中修复内存泄漏?

例如,我创建一个char* returnMe = new char[24324];returnMe,最终从函数返回.你如何解释这个内存泄漏?一旦它被退回,你怎么摧毁它?我有一些内存管理规则,在内存泄漏上抛出运行时错误来阻止它,所以我不能忽略它.

Orrr我是一个傻瓜,这不是泄漏,暗示泄漏在其他地方?

pax*_*blo 13

如果你退回它并不是泄漏(好吧,这不是你的泄漏).

您需要考虑资源所有权.如果从函数返回已分配的缓冲区,则函数的调用者现在负责它.API应该明确表示它们在完成后需要被释放.

无论是自己释放它还是将它传递给你的另一个函数来释放它(封装以防止需要完成而不仅仅是释放内存)是API的另一个问题.