我用这段代码得到了某种内存泄漏。虽然 is 实际上不会抛出任何错误,但当通过 Memcheck 运行时,它会检测到内存泄漏。
我是否也应该删除[]临时数组或其他东西?
这是它正在发生的功能:
每个内存分配都需要与一个释放配对。当此函数结束时,newBinaryNum
指向的内存尚未解除分配,并且该内存的地址不会保留在任何地方。因此,内存泄漏。
由于您没有对此BinaryNum
对象使用动态分配的任何好处,因此不要使用动态分配。只需将您的变量声明为BinaryNum newBinaryNum;
即可。编译器不仅会处理此对象的内存需求,而且您的代码也能够从返回值优化中受益。
(另外,您应该更多地依赖标准库。您对binaryAry
的操作模仿了std::vector
的功能。为什么要重新发明轮子?此函数的重点应放在BinaryNum
类上,因此将内存管理详细信息委托给标准库。