int (*p)[10];
p=new int[3][10];
delete p[0];
请问这样是释放a[0]行的地址还是释放数组的全部的地址??(delete []p这个我知道是释放数组的全部空间,我想知道delete p[0])
出错 释放数组的格式是delete [](指针名) 给你举个例子吧 在VC下,对于char int之类的内建数据类型,在debug下效果的确相同,也就是 char *p=new char[10]; delete p;跟delete []p;效果相同。(可能因为#define new DEBUG_NEW这句话) 但在Release下, 前者存在一定问题,内存貌似并没有被回收。(这个问题还需要进一步测试验证。) 对于非内建类型,正如Mackz指出: “delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。” 在MoreEffectiveC++中有更为详细的解释: “当delete操作符用于数组时,它为每个数组元素调用析构函数,然后调用operator delete来释放内存。” 在其他编译器上没有测试。 因此,出于谨慎考虑,还是用delete[]来释放比较好。 至少看上去可读性更好一点。
delete p[0];会导致内存异常,我在VC各版本中试过的.