大家看一下这个图不知道为什么啊

解决方案 »

  1.   


    #include<iostream>
    using namespace std;
    void main()
    {
    int *b=new int[5];
    for(int i=0;i<5;i++)
    b[i]=i;
    for(int i=0;i<5;i++)
    cout<<b[i]<<endl; delete b;        //不同处 for(int i=0;i<5;i++)
    cout<<b[i]<<endl;
    //*****************************
    int *c=new int[5];
    for(int i=0;i<5;i++)
    c[i]=i;
    for(int i=0;i<5;i++)
    cout<<c[i]<<endl; delete[] c;     //不同处 for(int i=0;i<5;i++)
    cout<<c[i]<<endl;
    system("pause");
    }
    这两段我运行没区别!!
      

  2.   


    但是这两个我运行没区别啊?那么delete 和delete[]又有什么区别呢?
      

  3.   

    就这段程序来讲,的确是没区别,而且在 任何一个 vc 编译器里运行都没问题
    但 delete 和delete[] 还是有区别
      

  4.   

    你试一下下面的代码,就知道 delete p 和 delete[]p 的区别了class MyD
    {
    public:
    MyD(){}
    ~MyD(){ TRACE(_T("\n ~MyD() \n")); }};MyD  *p = new MyD[5];delete p;
    delete []p;
      

  5.   

    照说delete b应该只释放 一个元素啊?
    delete[] c才释放整个数组吧但是我运行的结果是无论哪一种 都释放了整个数组 输出一律是-17891602我就不懂了
      

  6.   

    delete []是删除数组指针.delete是删除单个指针对象
      

  7.   

    那是因为你的程序里面new的时候,数据类型是基础数据类型,所以看不出问题!如果你new的不是基础数据类型的指针,还必须区分delete [] p,和delete p;前者你new的数组对象delete [] p;
      

  8.   

    通常你new的是基础数据类型是数组的话,delete [] p,detele p是没问题的......