Вы выделяете память для p и q:
p=new int [5];
/* ... */
q=new int;
Но вы освобождаете p только с использованием недопустимого оператора, поскольку массивы следует удалять с помощью delete [].В какой-то момент вы должны освободить как p, так и q, используя:
delete[] p;
delete q;
Обратите внимание, что, поскольку ваши указатели указывают на выделенный буфер другого указателя, вам, возможно, придется проверить, какой оператор delete
соответствует какомуnew
операция.
Вы должны использовать delete[]
для буфера, выделенного с помощью new[]
и delete
с буфером, выделенного с помощью new
.