Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 删除后内存泄漏[]_C++_Pointers_Memory Leaks - Fatal编程技术网

C++ 删除后内存泄漏[]

C++ 删除后内存泄漏[],c++,pointers,memory-leaks,C++,Pointers,Memory Leaks,我有一个内存泄漏问题,我不知道是什么原因造成的。我有一个包含数组的结构。我偶尔需要调整数组的大小,因此我创建了一个新数组,长度是旧数组的两倍,并复制所有旧值。然后我用delete[]数组删除数组,并用新数组重新分配旧数组 结构{ 双精度*数组=新双精度[1] int容量=1; } 调整结构和结构的大小{ double*数组=新的double[structure.capacity*2]; 对于int i=0;i

我有一个内存泄漏问题,我不知道是什么原因造成的。我有一个包含数组的结构。我偶尔需要调整数组的大小,因此我创建了一个新数组,长度是旧数组的两倍,并复制所有旧值。然后我用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已经执行的操作?此外,您没有发布显示如何使用类的主程序.