Это неопределенное поведение; тип аргумента delete
должен иметь тот же тип, что и результат соответствующего new
.
. Код можно улучшить с помощью:
int (*arr)[nCols] = new int[nRows][nCols];
(или даже auto *arr =
...) в этом случае то же самое выражение удаления будет правильным. Необходимость использовать актерский состав, как правило, признак того, что вы сделали неверный шаг.