Несмотря на то, что векторный тип встроен в структуру, единственный член в векторе, вероятно, является указателем. Добавление членов к вектору не увеличит размер самого векторного типа, но память, на которую он указывает. Вот почему вы никогда не увидите увеличения структуры в памяти и, следовательно, получите ошибку сегмента.
Обычно, когда люди хотят создать структуру переменного размера, они делают это, добавляя массив в качестве последнего члена структуры и устанавливая его длину равным 1. Затем они выделяют дополнительную память для структуры, которая фактически требуется для sizeof. () для того, чтобы «расширить» структуру. Это почти всегда сопровождается дополнительным членом в структуре, детализирующим размер расширенного массива.
Причина использования 1 тщательно задокументирована в блоге Рэймонда