Разница между delete и delete[] в программировании на C++ заключается в том, что delete предназначен для уничтожения одиночного объекта, а delete[] — для массива объектов. 14
Оператор delete знает, что по указателю лежит одиночный объект, и вызывает деструктор только для него. 1 Оператор delete[] же, наоборот, знает, что по указателю лежит массив объектов, и вызывает деструктор для каждого из них. 1
Таким образом, delete используется для удаления одного объекта, а delete[] — для удаления массива объектов. 2
При неправильном использовании операторов (например, delete вместо delete[]) результат будет неопределённым поведением (undefined behavior). 2
Также стоит учитывать, что оператор delete предназначен для уничтожения объектов, память под которые выделена при помощи new(), а delete[] — для объектов, выделенных при помощи оператора new[]. 2