Цитата:
Crazy_kettle:
Да похоже программисты Microsoft что-то с STL перемудрили и действительно где-то у них создаётся временный объект. Хотя это мне кажется странным, т.к. для больших объектов из-за этого скорость должна сильно упасть!!!!!!
|
Ничего тут мудрого нет. Повторяю еще раз медленно. Ты создал структуру (назовем его ts), при попытке добавления это структуры в в вектор создается новый обьект (назовем его ts1) , в ts1 копируется ts. Поскольку копи-конструктора у тебя нет, то копируется плоско - тоесть ПОБАЙТНО. В итоге получаем две структуры содержащие указатель на одну и ту-же область памяти. Для обеих структур вызывается деструктор (не обязательно при удалении из вектора, у тебя просто обьекты выходят из скопа, то есть кончается их время жизни) и пытается дважды освободить один и тот же указатель. В итоге креш. Я же писал
Обьекты помещаемые в стандартные (stl) контейнеры должны иметь копи-конструкторы. . Не надо косить на Microsoft, лучше изучи как работать с STL. Это давно уже стандарт языка С++. И писать надо не
как умею , а как того требуют правила языка. Не стыдно быть чайником - стыдно им оставаться.
Цитата:
Drakosha
Но неизвестно какая там имплементация, всё таки где-то он копируется
|
Еще как известно. STL - это библиотека шаблонов и поставляется в исходниках