Страницы

Поиск по вопросам

вторник, 5 февраля 2019 г.

Высвобождение памяти delete[]

Будет ли корректно работать код? void *ptr_1; long *ptr_2; *ptr_2=new long[10]; (long*)ptr_1=ptr_2; delete[] ptr_2;


Ответ

Во-первых, в том виде что вы привели, этот код даже компилироваться не будет, вот так он должен выглядеть: void *ptr_1; long *ptr_2; ptr_2 = new long[10]; ptr_1 = ptr_2; delete[] ptr_2; Во-вторых, после того как выполнится delete[] ptr_2;, указатель ptr_1 будет указывать на высвобожденную память, соответственно, любая попытка записи/чтения в/из нее приведет к ошибке.

Комментариев нет:

Отправить комментарий