Могли бы и на меня сослаться, чтобы гарантированно привлечь мое внимание. Не подумали об этом? Не знали, что есть возможность написать мой ник с собачкой в начале(Армянское Радио), чтобы у меня появилось уведомление?
Поздравляю - вы также не идеальный человек, который может наделать глупостей, и чьи знания на 100 процентов не совпадают с реальностью.
Возможность отстрела ног на C++ - это не про "изучение C++ по youtube", а вполне себе мем субкультуры программистов на C++, который получил известность, благодаря книге Голуба "Веревка достаточной длины, чтобы выстрелить себе в ногу". Как?! Вы и об этом не знали?!
Суть мема - C++ является очень тонкой прослойкой между программистом и железом, которая очень доверчива к программисту. А программист (даже со знанием стандартов, применением правил и так далее) - увы - ошибается.
И дело даже не в том что вроде как "программист не железный, вот и ошибается" - железо тоже ошибается.
Резюмирую - по ногам себе стреляют не только джуниоры, изучавшие C++ за 21 день, но и маститие глыбы, вроде Кармака. А C++ просто ничем от такой стрельбы не защищает.
maagames.ru: наше с вами обсуждение сейчас строится вокруг отсутствующей задачи, даже гипотетической. Решать вопрос о том, какие тактики использовать можно, имея перед собой задачу, либо формальное описание класса задач.
Вы в категоричной форме дали совет использовать умный указатель и забыть про delete, я написал, что такая категоричность - вредна.
Андрей Чвалов: я собираюсь в ближайшее время разбираться с этой проблемой для своего проекта силами qt5 и qserialport в частности. Пока что ничего более сказать не могу.
maagames.ru: А оверхед на содержание смартпоинтера вы учли? На то, что при каждом копировании у вас не просто одна инструкция mov, а целый вызов метода, который должен увеличить счетчик ссылок? А если копируется миллион экземпляров?
Тактика умных указателей не всегда оправдана.
Иногда вариант собственным пулом объектов и собственным менеджером памяти оказывается эффективнее.
yanchumak: все зависит от задачи. И от размера - огромный массив просто не поместится на стеке.
maagames.ru: предлагаю во-первых не переходить на панибратский тон, во-вторых, каждую задачу решать отдельно и соизмерять удобство, привносимое STL и BOOST с оверхедом, который они неизбежно притянут за собой.
Если мне нужен банальный статический массив, который никогда не будет расти, я использую или new T[] или std::array, но не std::vector.
Каждой задаче - свой инструмент. А не свалка "лучших практик от гуру".
yanchumak: Необходимость обнуления мотивируют "безопасным стилем программирования". Фактически, возможность безопасно скормить delete nullptr вместо указателя - это такой костыль в языке, чтобы криворуким авторам программ было удобнее.
Если у вас в программе обстоятельства складываются так, что объект может быть удален дважды, стоит в первую очередь подумать над архитектурой, а потом вбивать костыли в виде delete с последующим обнулением.