从偏移中删除数组

Mak*_*bex 2 c++ delete-operator

假设我分配了一组int

int test[] = new int[100];
Run Code Online (Sandbox Code Playgroud)

我把指针指向中间的某个地方

int *temp = &test[50];
Run Code Online (Sandbox Code Playgroud)

然后我在temp上调用delete []

delete[] temp
Run Code Online (Sandbox Code Playgroud)

在这种情况下,编译器如何知道要删除的元素的大小?

Luc*_*ore 8

它不会(或将会,我不知道).您正在调用未定义的行为.你只能调用delete[]分配的指针new[].

例如,我在MSVS中崩溃了.