Буфер на 10 нулей оказался вектором из двух элементов
std::vector<int> buf{10, 0};
for (size_t i = 0; i < 10; ++i) {
buf[i] = read_sample();
}
Санитайзер AddressSanitizer сообщает о записи за границу контейнера на i = 2. Почему?
- Фигурные скобки создали вектор из 10 и 0
- Конструктор не выделяет память до push_back
- Фигурные скобки создают пустой вектор с ёмкостью
- operator[] не работает на векторе без reserve
