关于delete[] 和 delete 大家看一下这个图不知道为什么啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #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");}这两段我运行没区别!! 但是这两个我运行没区别啊?那么delete 和delete[]又有什么区别呢? 就这段程序来讲,的确是没区别,而且在 任何一个 vc 编译器里运行都没问题但 delete 和delete[] 还是有区别 你试一下下面的代码,就知道 delete p 和 delete[]p 的区别了class MyD{public: MyD(){} ~MyD(){ TRACE(_T("\n ~MyD() \n")); }};MyD *p = new MyD[5];delete p;delete []p; 照说delete b应该只释放 一个元素啊?delete[] c才释放整个数组吧但是我运行的结果是无论哪一种 都释放了整个数组 输出一律是-17891602我就不懂了 delete []是删除数组指针.delete是删除单个指针对象 那是因为你的程序里面new的时候,数据类型是基础数据类型,所以看不出问题!如果你new的不是基础数据类型的指针,还必须区分delete [] p,和delete p;前者你new的数组对象delete [] p; 通常你new的是基础数据类型是数组的话,delete [] p,detele p是没问题的...... 有会PROE二次开发的人进来一下 如何实现软件的在线安装? 本人穷,求深入浅出mfc 简体中文第二版电子书! 怎样去掉CImageList中的ICON的背景色,使背景色透明? 知道进程ID,如何获得该进程内的随便一个线程ID? 问一个老问题,dll中的对话框怎么调用出来了不能操作啊?? 如何在CStatic上贴icon 一句话,看了半天没搞懂,请高手指点!(在线等待) 请问有谁知道把一个浮点数四舍五入为整数的函数?谢谢!! 怎样找到被合并段的Raw data Pointer?(PE文件格式) 关于用CDC画线问题 (急)Socket 接收失败错误10035
#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");
}
这两段我运行没区别!!
但是这两个我运行没区别啊?那么delete 和delete[]又有什么区别呢?
但 delete 和delete[] 还是有区别
{
public:
MyD(){}
~MyD(){ TRACE(_T("\n ~MyD() \n")); }};MyD *p = new MyD[5];delete p;
delete []p;
delete[] c才释放整个数组吧但是我运行的结果是无论哪一种 都释放了整个数组 输出一律是-17891602我就不懂了