Ответы пользователя по тегу C++
  • Как правильно чистить память в c++?

    ElleSolomina
    @ElleSolomina
    Ёжик в тумане. Ёлочка. Соломинка. Няшка.
    Точный ответ на вопрос дать не могу поскольку код представлен не полностью. Вероятнее всего data в классе объявлена не верно, она должна быть указателем на массив и никак иначе, pointersaver в коде ниже тоже должен быть указателем на массив, хотя бы преобразовываться к этому типу (с помощью static_cast) в месте вызова delete.

    Вообще при использовании C++ настоятельно рекомендуется использовать ссылки, умные указатели unique_ptr, и готовые конструкции для типов, подойдёт array.

    Если же целью ставится разобраться в "сырых" указателях и работе с ними, то стоило бы вместо цикла for (int i = deg; i >= 0; i--) data[i] = 0; использовать memset.

    Однако повторюсь, в общем случае гораздо лучше написать высокоуровневый код использую стандартную библиотеку и не лазая в дебри прямого доступа к памяти и других низкоуровневых конструкций.

    P.S. в Release код сильно изменяется компилятором в процессе оптимизации и из-за большего количества "знаний о коде" компилятор может сгенерировать его гораздо чище чем он был написан, а в Debug оптимизации не применяются и поэтому код будет работать так как написан.

    Доп: а вообще вот нашёл хорошую статью по теме https://habrahabr.ru/company/abbyy/blog/117208/ там рассказано как new[] delete[] работает на примерах с ошибками.
    Ответ написан
    Комментировать
  • Какие самые востребованные навыки для разработчика на C/C++?

    ElleSolomina
    @ElleSolomina
    Ёжик в тумане. Ёлочка. Соломинка. Няшка.
    C++ это язык на котором можно писать "чуть более чем всё", поэтому без указания области применения ответа на вопрос можете не дождаться. В общем прошу уточнений области, например: "высокие нагрузки", "приложения для мобильных платформ", "прикладное ПО для ОС XXX", "встраиваемое ПО", "игры", "приложения реального времени", и т.д. и т.п. Так что, пожалуйста, уточните хотя бы примерную область.
    Ответ написан
    Комментировать