Проблема
int *pint = new int ;
Динамически выделяет один int
.Позже,
pint++;
Увеличивает указатель, а не значение.При увеличении указателя указатель увеличивается на один элемент, поэтому pint++
увеличивает адрес в pint
на один int
, чтобы указывать на границы того, что было выделено.Попытка получить доступ или delete
к тому, на что указывает, вызовет неопределенное поведение и, скорее всего, приведет к аварийному завершению программы.
pDouble++;
имеет тот же эффект, но переходит к следующему double
.
Решение
Нет другого решения, кроме как не делать этого.Если вам нужно увеличить указатель, например, для перебора массива, сохраните указатель на исходный адрес, чтобы вы могли освободить его, когда закончите.