initialized.
И дальше пример что если передать указатель на вектор в FFI, а потом изменить размер — то норм. Вопрос, норм ли если наоборот, сначала увеличить размер, а затем FFI запишет туда данные? Или это уже UB, раз та память инициализируется позже?
Кажется, тебе нужно не len, а capacity менять
это всё мутно, но лучше не надо там много источников уб потенциальных
Ну capacity я тоже меняю. Просто у меня есть код который вызывает экспортированную функцию чтобы установить capacity. Затем я снаружи по указателю вектора записываю заранее известное количество байт. А затем снова дёргаю другую экспортированную функцию в которую передаю (ptr, len, capacity) этого же вектора. Но передаю по указателю и чот не хочется мне лишний раз ходить по FFI, чтобы после записи и длину выставить.
Кажется, лучше лишний вызов через FFI (что около ничего не стоит), чем хлипкие негарантированные инварианы
Тем более, тут особо и разночтений нет > The elements at old_len..new_len must be initialized. Явно говорит, что нельзя менять len до записи данных
Обсуждают сегодня