删除动态数组后,其绑定的某些值不会更改。为什么?

时间:2019-06-14 05:11:48

标签: c++ arrays pointers dynamic-memory-allocation

在c / c ++中:

delete运算符用于删除动态数组,但是在使用删除功能删除数组之后,再打印该数组,某些值仍然相同..为什么?


#include <iostream>
using namespace std;

int main()
{
    int n=5;
    int*A=new int[n];
    for (int i=0;i<n;i++)
    {
       A[i]=i+1;
    }
    delete [] A; //deleting 'A' array
    for (int i=0;i<n;i++)
    {
       printf("%d ",A[i]);
    }
}

输出将是:

0 0 3 4 5

为什么数组的某些值仍然相同? 为什么不应该产生垃圾值?

如果我们删除delete [] A;,则输出将为:

1 2 3 4 5

1 个答案:

答案 0 :(得分:0)

您的代码在释放错误后可以访问。如果您修复了该错误,这个谜团将消失。真的就是这么简单。