C++ 删除后内存泄漏[]
我有一个内存泄漏问题,我不知道是什么原因造成的。我有一个包含数组的结构。我偶尔需要调整数组的大小,因此我创建了一个新数组,长度是旧数组的两倍,并复制所有旧值。然后我用delete[]数组删除数组,并用新数组重新分配旧数组 结构{ 双精度*数组=新双精度[1] int容量=1; } 调整结构和结构的大小{ double*数组=新的double[structure.capacity*2]; 对于int i=0;iC++ 删除后内存泄漏[],c++,pointers,memory-leaks,C++,Pointers,Memory Leaks,我有一个内存泄漏问题,我不知道是什么原因造成的。我有一个包含数组的结构。我偶尔需要调整数组的大小,因此我创建了一个新数组,长度是旧数组的两倍,并复制所有旧值。然后我用delete[]数组删除数组,并用新数组重新分配旧数组 结构{ 双精度*数组=新双精度[1] int容量=1; } 调整结构和结构的大小{ double*数组=新的double[structure.capacity*2]; 对于int i=0;i
==91== 16 bytes in 1 blocks are definitely lost in loss record 1 of 1
==91== at 0x4C3089F: operator new[](unsigned long)
您的结构没有遵循,特别是当结构本身被销毁时,它缺少删除当前数组的析构函数[]: 结构{ double*数组=新的double[1]; int容量=1;
~Structure{delete[]array;}/您的结构没有遵循,特别是当结构本身被销毁时,它缺少一个析构函数来删除[]当前数组: 结构{ double*数组=新的double[1]; int容量=1;
~Structure{delete[]array;}//此代码无法编译。请发布正确且可以编译的代码。除了不更新容量之外,代码看起来还行。您能给我们一个导致内存泄漏的原因吗?您如何知道此错误来自调整大小?如果不删除[]resize之外的内存-这可能是问题的原因。不相关,但您不执行structure.capacity*=2;after structure.array=array,因此即使分配了2倍,容量仍将保持在1。为什么您要尝试执行std::vector已经执行的操作?此外,您没有发布显示如何使用类的主程序。此代码无法编译。请发布正确且可以编译的代码。除了不更新容量之外,代码看起来还行。您能给我们一个导致内存泄漏的原因吗?您如何知道此错误来自调整大小?如果您不删除[]resize之外的内存-这可能是问题的原因。不相关,但您不执行structure.capacity*=2;after structure.array=array,因此即使分配了2倍,容量仍将保持在1。为什么您要尝试执行std::vector已经执行的操作?此外,您没有发布显示如何使用类的主程序.