總結一下delete容易出錯的地方:
int *a=new int[10];
......
delete []a;
當後面delete []a;出現錯誤的情況大致有:
1 數組的首地址a被你有意無意更改了,如:a++之類的;
2 變量的作用域問題,如:你是在一個函數體中new的,卻在另一個函數體中delete,這時的a變量已經失效了,這時delete會出現a為不認識的標識符的錯誤;
3 先前已經delete過一次了,不可以delete兩次;
4、內存訪問越界,VC分配內存,除了分配你需要的內存空間外還會分配一些管理單元,就在你分配空間的上界和下界,比如內存邊界標志(0xFDFDFDFD),如果是數組在上界會記錄數組元素的個數,你要是修改了這些管理信息,delete的時候就會報錯。