delete вместо delete[] для массива
uint8_t* buf = new uint8_t[n];
read_into(buf, n);
delete buf; // без квадратных скобок
Код собирается без предупреждений и на тестах не падает. Что с ним не так?
- Ошибок нет: для типов без деструктора, таких как `uint8_t`, формы `delete` и `delete[]` равнозначны, и компилятор сам подставит нужную по типу выражения
- Массив, созданный через `new[]`, обязан освобождаться через `delete[]`; несоответствие форм — неопределённое поведение
- Освободится только первый байт массива, остальные `n - 1` байт останутся занятыми до завершения процесса
- Код не соберётся: компилятор следит за тем, чтобы к памяти из `new[]` применяли только `delete[]`
