Возможный дубликат:
Насколько это безопасно? удалить недействительный указатель?
Будет ли следующий код вызывать утечку памяти?
void *ptr = new long [10];
delete[] ptr; // note: ptr is a void*
[РЕДАКТИРОВАТЬ] Приведенный выше код сгенерирует предупреждающее сообщение во время компиляции, чтобы указать его "undefined". Я спрашиваю об этом, потому что мне интересно, как C ++ обрабатывает диапазоны памяти при вызове delete []. Я должен изменить свой вопрос, чтобы сделать его более конкретным.
Будет ли следующий код вызывать утечку памяти?
char *ptr = (char *)(new long [10]);
delete[] ptr; // note: ptr is a char*