我们有时候发现,形如delete [] a ,代码执行的时候出现错误,我知道有两种可能情况,列举如下
原因1
例子
int * a = new int[100];
a[99] =11; //ok
delete [] a;
int * a = new int[100];
a[100] =11; //error
delete [] a;
可见越界操作是这类错误的原因之一
原因1
例子
int * a = new int[100];
int * b;
a = b ;
a = a+n;
delete [] a;
可见头指针偏移也使是这类错误的原因之一;
大家不妨试试,以第一种情况比较难以除错,第二种情况最为常见,但易于排故