需要帮助对内存泄漏源进行故障排除-C ++

时间:2019-10-11 03:30:06

标签: c++ memory-leaks

此代码导致某种内存泄漏。尽管实际上并没有引发任何错误,但是通过Memcheck运行时,它会检测到内存泄漏。

我还应该删除[]临时数组或其他内容吗?

这是它正在发生的功能:

1 个答案:

答案 0 :(得分:1)

每个内存分配都必须与一个释放内存配对。当该函数结束时,newBinaryNum所指向的内存尚未释放,并且该内存的地址未保留在任何地方。因此,内存泄漏。

由于您没有为此对象BinaryNum使用动态分配的任何好处,因此请勿使用动态分配。只需将变量声明为BinaryNum newBinaryNum;。不仅编译器可以处理该对象的内存需求,而且您的代码也可以从return value optimization中受益。

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