use*_*713 -1 c++ pointers destructor
我有以下情况.
int *arrayP=new int[4];
arrayP[0]=0;arrayP[1]=1;arrayP[2]=2;arrayP[3]=3;
int *temp;
cout<<arrayP[0]<<endl;
temp=arrayP;
++arrayP;
cout<<arrayP[0];
cout<<arrayP[1];
delete temp;
cout<<arrayP[0];
Run Code Online (Sandbox Code Playgroud)
产量
0
1
2
-1212222
Run Code Online (Sandbox Code Playgroud)
为什么会这样?arrayP指向大小为4的数组上的第一个元素.因此temp也指向第一个元素现在为什么删除temp即第一个元素也会删除整个整数array.arrayP会存储数组的下一个元素的地址,因此数组不是孤儿.(我假设它删除了整数数组,因为arrayP [0]显示垃圾值.)
如果是这种情况(即删除temp将删除整个整数数组)删除[]和删除之间的区别.
如果你使用,new[]你必须平衡它delete[].
如果你使用,new你必须平衡它delete.
混合它们将导致内存泄漏/程序崩溃(技术上未定义的行为).(在您的示例中,C++在内部记录您已创建4 int秒;调用delete[]允许C++访问此记录.调用delete不会).
| 归档时间: |
|
| 查看次数: |
869 次 |
| 最近记录: |