Оператор C ++ Delete [] - PullRequest
       70

Оператор C ++ Delete []

0 голосов
/ 13 июля 2020

Работает ли

#include <iostream>

using namespace std;

int main()
{
    float* temps = new float[10];

    float* temps2 = temps;

    delete[] temps2;

    return 0;
}

так же, как

#include <iostream>

using namespace std;

int main()
{
    float* temps = new float[10];

    float* temps2 = temps;

    delete[] temps;

    return 0;
}

?

Освобождают ли они всю выделенную память? Или мне нужно удалить [] исходный указатель?

1 Ответ

4 голосов
/ 13 июля 2020

Оба в порядке.

Пока указатель имеет точно такой же тип (допускается изменение на const или наоборот), вы можете вызвать delete[].

( Обратите внимание, что для new и delete указатель может быть полиморфно связан, но это не верно для new[] и delete[]).

...