Хотя я предполагаю, что оригинальный постер не освобождает свои «всплывающие» указатели (pop не делает этого за вас), std :: vector имеет еще одну «особенность», которая может скрыть проблему. std :: vector перераспределяет пространство так, что каждый push_back не влечет за собой перераспределение и копирование существующего содержимого. Другими словами, пространство, используемое для вектора, обычно больше, чем то, которое возвращает .size ().
Посмотрите на идиому shrink-to-fit , если вы хотите, чтобы std :: vector занимал не больше места, чем нужно для хранения его элементов. Бесполезно, если вы постоянно манипулируете вектором, но как только вы загрузите все, это может сэкономить место.