此代码导致某种内存泄漏。尽管实际上并没有引发任何错误,但是通过Memcheck运行时,它会检测到内存泄漏。
我还应该删除[]临时数组或其他内容吗?
这是它正在发生的功能:
答案 0 :(得分:1)
每个内存分配都必须与一个释放内存配对。当该函数结束时,newBinaryNum
所指向的内存尚未释放,并且该内存的地址未保留在任何地方。因此,内存泄漏。
由于您没有为此对象BinaryNum
使用动态分配的任何好处,因此请勿使用动态分配。只需将变量声明为BinaryNum newBinaryNum;
。不仅编译器可以处理该对象的内存需求,而且您的代码也可以从return value optimization中受益。
(此外,您应该更多地依靠标准库。对binaryAry
的操作模仿了std::vector
的功能。为什么要重新发明轮子呢?您应该将重点放在此功能上BinaryNum
类,因此将内存管理详细信息委托给标准库。)