首页 > 解决方案 > 需要帮助解决内存泄漏源 - C++

问题描述

这段代码出现了某种内存泄漏。虽然 is 实际上并没有抛出任何错误,但是当通过 Memcheck 运行时,它会检测到内存泄漏。

我还应该删除[]临时数组还是什么?

这是它发生的功能:

标签: c++memory-leaks

解决方案


每个内存分配都需要与一个释放配对。当这个函数结束时,所指向的内存newBinaryNum还没有被释放,并且该内存的地址也不会被保留在任何地方。因此,内存泄漏。

由于您没有为此BinaryNum对象使用动态分配的任何好处,因此请不要使用动态分配。只需将您的变量声明为BinaryNum newBinaryNum;. 编译器不仅会处理该对象的内存需求,而且您的代码也将能够从返回值优化中受益。

(此外,您应该更多地依赖标准库。您对binaryAry模仿功能的操作std::vector。为什么要重新发明轮子?您在此功能中的重点应该放在BinaryNum类上,因此将内存管理细节委托给标准库.)


推荐阅读