我想通过循环遍历所有元素并调用delete
每个元素来删除动态分配的数组。
(我这样做是因为我必须将一个数组“移动”到另一个位置,即复制原始数组然后删除它,但这将花费 2 倍于同时复制每个元素并delete
单独调用它们的时间)
我有以下代码:
int main()
{
int *n=new int[2];
delete n;
delete (n+1);
}
但是每次运行时我都会遇到分段错误....
虽然,这很好用 - :
int main()
{
int *n=new int[1];
delete n;
}
所以,我的猜测是 delete 以某种方式删除了整个数组而不是单个元素!
谁能解释我的猜测是否正确,如果是,请提出可能的解决方法?
我在 Ubuntu 13.04 上使用 GCC 4.7.3