работы с файлами, и оказалось, что он использовал VLA в циклах. Как это пофиксить? Беда вот в чём - там происходит по сути вырезание куска одного файла в новый другой, оба файла бинарные. Просто заменить VLA-буфер на вектор не могу - поедет часть, где происходит std::(i/o)fstream-овый read/write, которые хотят указатель.
Как бы получше оформить эту часть кода? Хочется при этом решение поплюсовее и поэффективнее.
Надо переписывать, выделять динамически память, если это реально нужно (можно через std::vector)
Не поедет
поплюсовее и поэффективнее. - std::vector - самое то, что надо.
Есть идея сделать reserve на размер чанка и затем кормить read и write векторным data(). Вы это имеете в виду?
Да, хотя про reserve и чанки я не говорил и не мог, это уже надо код конкретный смотреть
А спросил потому, что ожидал, что поплюсовее - какой-нибудь, скажем, std::copy от файловых итераторов, а не read/write.
Какая разница то? Кроме того, тебе наверное нужен бинарный, а не форматный, ввод/вывод...
Обсуждают сегодня