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

Рейтинг: 3Ответов: 1Опубликовано: 13.06.2011

Будет ли корректно работать код?

void *ptr_1;  
long *ptr_2;  
*ptr_2=new long[10];  
(long*)ptr_1=ptr_2;  
delete[] ptr_2;

Ответы

▲ 6Принят

Во-первых, в том виде что вы привели, этот код даже компилироваться не будет, вот так он должен выглядеть:

void *ptr_1;  
long *ptr_2;  
ptr_2 = new long[10];  
ptr_1 = ptr_2;  
delete[] ptr_2;

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