Это довольно надуманно, но является следующим кодом «безопасно» (т.е. гарантированно не вызывать ошибку сегментации): < /p>
std::vector vec(1); // Ensures that &vec[0] is valid
vec.reserve(100);
memset(&vec[0], 0x123, sizeof(int)*100); // Safe?
< /code>
Я понимаю, что это уродливо - мне интересно узнать, технически ли это безопасно, а не «красиво». Я предполагаю, что это единственное использование может состоять в том, чтобы игнорировать значения, хранящиеся за пределами данного индекса. < /P>
Примечание! Как я могу получить адрес буфера, выделенного Vector :: Reserve ()? Охватывает ту же тему, но мне больше интересно, если это безопасно и если есть подводные камни.>
Подробнее здесь: https://stackoverflow.com/questions/822 ... serve-safe