Вектор объектов класса - PullRequest
1 голос
/ 11 июня 2011

Я создал вектор объектов класса.Следующая программа вылетает с

 "Pointer being freed was not allocated". 

Я также глубоко скопировал.Я не вижу, где происходит двойное удаление.Чего мне не хватает?

1005 *

Ответы [ 3 ]

5 голосов
/ 11 июня 2011

Я не посмотрел ваш код подробно, но если вы думаете, что вам нужен конструктор копирования, вам также нужен оператор присваивания.И, почему, почему, зачем всё это писать?Почему бы не использовать std :: string?Вы чувствуете необходимость писать свои собственные типы с плавающей точкой?Нет, я так не думаю.

3 голосов
/ 11 июня 2011

Используйте delete[] вместо delete, так как вы освобождаете массив.

Кстати, в main() вы также должны вызывать delete[] test;, иначе вы получите утечку памяти.

0 голосов
/ 11 июня 2011

В целом, я бы не использовал объекты с указателями в качестве членов (например, буфер в вашем bufferElement) в качестве типов в векторе (или в любом другом контейнере stl) без конструктора копирования И оператора присваивания.Если деструктор освобождает этот указатель, это рецепт уничтожения.Вы должны бытьа) предоставить копию ctr и задание opИЛИ ЖЕб) не используйте указатели (используйте умные указатели, такие как boost :: scoped_ptr или boost: shared_ptr или даже в вашем случае auto_ptr), которые я предпочитаю больше

...