Почему вы выделяете вектор новым? Почему вы выделяете свой временный DEMData
объект новым?
A vector
хранит копию того, что вы передаете ему, а не сами данные, поэтому, если вы не удаляете объект DEMData, который вы выделили с новым, вы теряете память каждый раз, когда вы вставьте элемент в вектор. Точно так же вы настраиваете себя на проблемы утечки памяти, динамически выделяя вектор.
Что касается того, почему все объекты в векторе, похоже, содержат одни и те же данные, вполне вероятно, что у вас их больше - вероятно, использование указателей в сочетании с неверным ctor для копирования, что в итоге делает несколько мелких копий местами этого не должно быть - но поскольку вы не показали нам этот код, это только предположение.
Редактировать: Теперь, когда вы добавили код для своего класса DEMData, похоже, что приведенное выше предположение было верным - у вас есть указатели, а пользовательский экземпляр копирования отсутствует, поэтому вы получаете мелкую копию.
В качестве первого шага я избавился бы от всех членов-указателей char и заменил бы их на std::string
s. С int
членами должно быть все в порядке - при копировании их будут скопированы значения.
Edit2: Учитывая то, что вы делаете с этими переменными-членами, похоже, что вы должны рассмотреть возможность использования двух std::map
s - одного для std::string
переменных и одного для int
переменных.