删除动态数组会混淆我的结果

时间:2017-08-05 05:24:49

标签: c++ arrays pointers

我将旧数组设置为新数组的值 array = newArray;

如果我打电话 delete[] newArray;

之后,它弄乱了结果。但是,如果我不删除,那么结果就会正确。我哪里错了?下面显示了在调用delete函数之前打印的数组,第二部分是在之后调用它。

2
4
6
2
4
6

3.18449e-314
3.18449e-314
6
2
4
6

1 个答案:

答案 0 :(得分:1)

  

我将旧数组设置为新数组array = newArray;

的值

这不是你在C ++中复制数组的方式。这只是指定指针的值。你需要:

  1. 为新阵列分配内存。
  2. 将元素从旧数组复制到新数组。
  3. 然后您可以在旧阵列上调用delete

    如果您可以选择使用std::vectorstd::array,则可以避免所有麻烦。如果你这样做,那么你可以使用:

    array = newArray;
    

    当然,这也意味着您不必使用

    delete [] newArray;