Это довольно надуманно, но является ли следующий код "безопасным" (т.е. гарантированно не вызовет ошибку сегментации):
std::vector vec(1); // Ensures that &vec[0] is valid
vec.reserve(100);
memset(&vec[0], 0x123, sizeof(int)*100); // Safe?
Я понимаю, что это уродливо - меня интересует только техническая безопасность, а не "красота". Я полагаю, что единственным его применением может быть игнорирование значений, хранящихся за пределами заданного индекса.
Примечание! Как я могу получить адрес буфера, выделенного vector::reserve()? охватывает ту же тему, но меня больше интересует, является ли это безопасным и есть ли при этом подводные камни.
EDIT: Оригинальный код был неправильным, замените оригинальный memcpy
на memset
.