Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.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++新手。我正在尝试运行小型动态阵列应用程序。我创建了两个动态数组,然后使用delete[]删除了两个数组,但我得到了一个错误:双重免费或损坏 class DynamicArray { private: X *array; int Size; int Reserve_size; public: DynamicArray() { array = new X[_DEFAULT_SIZE]; Size = 0; Reserve_size = _DEFAULT_SIZE; } ~DynamicArray() { delete[] array; } void insert(X data) { if (Size == Reserve_size) { X *tempArray = new X[Reserve_size + _DEFAULT_SIZE]; for (size_t i = 0; i < Size; i++) { tempArray[i] = array[i]; } //memcpy(newArray, array, sizeof(array)); delete[] array; array = tempArray; delete[] tempArray; Reserve_size = Reserve_size + _DEFAULT_SIZE; } array[Size] = data; Size++; } X Get(int index) { return array[index]; } };_C++_Pointers_Memory Leaks - Fatal编程技术网

当我要删除动态数组时,我得到了双重无错误或损坏 我是C++新手。我正在尝试运行小型动态阵列应用程序。我创建了两个动态数组,然后使用delete[]删除了两个数组,但我得到了一个错误:双重免费或损坏 class DynamicArray { private: X *array; int Size; int Reserve_size; public: DynamicArray() { array = new X[_DEFAULT_SIZE]; Size = 0; Reserve_size = _DEFAULT_SIZE; } ~DynamicArray() { delete[] array; } void insert(X data) { if (Size == Reserve_size) { X *tempArray = new X[Reserve_size + _DEFAULT_SIZE]; for (size_t i = 0; i < Size; i++) { tempArray[i] = array[i]; } //memcpy(newArray, array, sizeof(array)); delete[] array; array = tempArray; delete[] tempArray; Reserve_size = Reserve_size + _DEFAULT_SIZE; } array[Size] = data; Size++; } X Get(int index) { return array[index]; } };

当我要删除动态数组时,我得到了双重无错误或损坏 我是C++新手。我正在尝试运行小型动态阵列应用程序。我创建了两个动态数组,然后使用delete[]删除了两个数组,但我得到了一个错误:双重免费或损坏 class DynamicArray { private: X *array; int Size; int Reserve_size; public: DynamicArray() { array = new X[_DEFAULT_SIZE]; Size = 0; Reserve_size = _DEFAULT_SIZE; } ~DynamicArray() { delete[] array; } void insert(X data) { if (Size == Reserve_size) { X *tempArray = new X[Reserve_size + _DEFAULT_SIZE]; for (size_t i = 0; i < Size; i++) { tempArray[i] = array[i]; } //memcpy(newArray, array, sizeof(array)); delete[] array; array = tempArray; delete[] tempArray; Reserve_size = Reserve_size + _DEFAULT_SIZE; } array[Size] = data; Size++; } X Get(int index) { return array[index]; } };,c++,pointers,memory-leaks,C++,Pointers,Memory Leaks,删除数组指向的数组两次:一次在insert中,另一次在~DynamicArray中 请记住,对于每个对new的调用,必须有一个且只有一个对delete的调用。还请记住,您不会删除指针,而是删除指针指向的对象 下面是一组图形,希望能说明发生了什么: 建造师之后: array +-------+ +--+--+--+-----+--+ | +--------> | | | ... | | +-------+ +--+--+--+-----+-

删除数组指向的数组两次:一次在insert中,另一次在~DynamicArray中

请记住,对于每个对new的调用,必须有一个且只有一个对delete的调用。还请记住,您不会删除指针,而是删除指针指向的对象

下面是一组图形,希望能说明发生了什么:

建造师之后:

  array
+-------+        +--+--+--+-----+--+
|       +-------->  |  |  | ... |  |
+-------+        +--+--+--+-----+--+
在X*tempArray=newx之后[保留大小+\u默认大小]:

删除[]数组后:

数组=临时数组后:

删除[]临时数组后:

在卡雷:


哎呀,数组没有指向任何东西,所以不能删除它指向的对象。

array=tempArray;删除[]临时数组;没什么意义@好奇的家伙你这是什么意思。C++创建另一个数组并将其复制到前一个数组。你从哪里来?基于价值的语言?基于参考的?
  array
+-------+        +--+--+--+-----+--+
|       +-------->  |  |  | ... |  |
+-------+        +--+--+--+-----+--+

tmpArray
+-------+        +--+--+--+-----+--+-----+--+--+
|       +-------->  |  |  | ... |  | ... |  |  |
+-------+        +--+--+--+-----+--+-----+--+--+
  array
+-------+
|       +-------->
+-------+

tmpArray
+-------+        +--+--+--+-----+--+-----+--+--+
|       +-------->  |  |  | ... |  | ... |  |  |
+-------+        +--+--+--+-----+--+-----+--+--+
  array
+-------+
|       +---------+
+-------+         |
                  |
tmpArray          |
+-------+        +v-+--+--+-----+--+-----+--+--+
|       +-------->  |  |  | ... |  | ... |  |  |
+-------+        +--+--+--+-----+--+-----+--+--+
  array
+-------+
|       +---------+
+-------+         |
                  |
tmpArray          |
+-------+         v
|       +-------->
+-------+
  array
+-------+
|       +---------+
+-------+         |
                  |
                  |
                  v