Хорошо, оказывается, проблема не в распределении вектора, а в цикле for (). Замена его на правильную петлю do / while исправила это. GDB просто запутался в том, где была ошибка, и прикрепил ее к векторной линии ... тьфу. Не удивительно, учитывая использование STL.
Кроме того, тем, кто говорит, что динамическое выделение вектора может испортить кучу - почему? Это не имеет никакого смысла; Мне все равно, если я выделю каждый объект динамически; это не должно вызывать проблем. Смешивание объектов в куче и стеке вызывало у меня много проблем в прошлом; единственный способ заставить все работать последовательно - это использовать все объекты кучи.
Если кто-то может объяснить, как объекты стека и кучи могут сосуществовать, я был бы рад это услышать, потому что они никогда не работали вместе для меня. Objective-C имеет смысл, в то время как бессмысленная обработка объектов в C ++ почти всегда вызывает проблемы. К сожалению, мы обязаны использовать C ++, поэтому у меня нет большого выбора ...