我对C ++中的delete []运算符感到困惑。我知道释放动态内存(堆)的目的是。但是我在下面尝试了这段代码,发现了一些麻烦:
int *dynArrOne = new int[10];
int *dynArrTwo = nullptr;
因此,它将通过堆栈中的指针 dynArrOne 在堆中创建10个新地址。然后我写道:
int *dynArrOne = new int[10];
int *dynArrTwo = dynArrOne;
因此, dynArrTwo 和 dynArrOne 现在指向堆中的相同地址。如果我写:delete [] dynArrOne;
,堆中的内存将被释放。麻烦的是,我无法通过 dynArrTwo :delete [] dynArrTwo
重新分配堆中的内存。我的意思是,为什么会这样?为什么我不能通过 dynArrTwo 在堆中释放内存?