Вот небольшой фрагмент моего кода для анализа файлов PDB для моделирования молекулярной динамики:
Structure *s = new Structure(pdb_filename);
Chain *c = new Chain();
while( ... read file ... ) {
if ( ... new chain ... ) {
Chain *c = new Chain();
s->add_child(c); // Add reference to a vector to
// save the Chain for later
}
}
Когда вызывается содержащая функция, код работает как обычно и дает совершенно новые объекты Structure и Chain, как в первых двух строках фрагмента.
Когда критерии для новой цепочки встречаются снова при циклическом перемещении по файлу, код возвращает тот же указатель цепочки на объект, что и раньше.
Будет ли g ++ давать один и тот же указатель снова и снова? Есть ли способ обойти это?
Если я добавлю указатель c к дочернему вектору 's', я предполагаю, что вызов delete c вызовет еще большие головные боли?