• Как правильно чистить память в c++?

    @res2001
    Developer, ex-admin
    Ошибка вылетает только при компиляции в Debug, потому что в этом режиме, скорее всего, в код включаются проверки целостности кучи. Просто в release целостность кучи не проверяется, но это не значит, что ошибки нет.

    Ошибка тут:
    for (int i = 0; i <= deg; i++) newdata[i] = data[i];
    Вместо deg нужно использовать maxdeg, имхо.

    Кроме того вы не проверяете значение deg и maxdeg до выделения памяти. Что если они содержат значения <= 0?

    Возможно, есть и другие места с присваиванием массиву data и переменной deg. Нужно искать выход за границу массива при присваивании элементам массива из-за чего повреждается куча.
    Так же настораживает new int[deg +1] и операторы >= и <= в условиях циклов обхода массива, это потенциальные места выхода за границу. Возможно, если перейти от deg к количеству элементов в массиве, то код упростится (уберете +1 при выделении и = в условии циклов) и будет легче найти ошибку.

    PS: в качестве небольшой оптимизации: для обнуления массива можно использовать функцию memset, для копирования массивов - memcpy.
    Ответ написан
    1 комментарий
  • Болезнь творца или как создать свой виртуальный мир?

    @xCyber
    История одного искусственного виртуального мира: https://geektimes.ru/post/90571/
    Реализовать можно на javascript и canvas
    5a58717ee25db142273485.png
    Ответ написан
    Комментировать
  • Болезнь творца или как создать свой виртуальный мир?

    @santaatnas
    Java, Python, Php
    Вы какую-то ерунду выдумываете на php такое делать)). Unity + С# и вперед)) Можно и под VR сделать. Любая логика, любой код, ИИ и все прочее + интерфейсы бесплатные, куча моделей из коробки. В C# разберетесь, он тоже ООП как и php.
    Ответ написан
    Комментировать
  • Насколько сложно написать систему подсчета количества однотипных действий человека на видео?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    {бредовый способ}
    Если действия так или иначе заставляют человека совершать движения головой с достаточной амплитудой. То достаточно взять любую либу распознавания лиц на фото (позиции лиц уже давно научились достаточно точно трекать) и измерять цикличность колебаний рожи человека.
    {/бредовый способ}
    Ответ написан
    Комментировать
  • Алгоритм быстрого роста? Как?

    AxianLTD
    @AxianLTD
    Физика говорит нам, что скорости сравнивают по ускорению. Т.е приращению скорости в единицу времени. Т.е. первая производная. Стабильность покажет вторая производная.
    Ответ написан
    Комментировать
  • Как разрешить спортивный семейный IT спор?

    @Gryadk_in
    Одна из моих учителей программирования, всегда говорила:
    Главное в программировании - алгоритм. По хорошему алгоритму и школьник напишет программу.

    Работайте над проектом вдвоем. Пусть она разрабатывает сценарии поведения, а вы будете по нему кодить. Если у нее есть жилка - значит сумеет мыслить кубиками и ромбиками.

    В процессе работы поймете какие задачи можно будет перепоручить ей со справочником.

    В итоге у вас получится или не получится рабочее приложение.

    Для затравки - может составить список софта на телефоне, которого ей не хватает или не устраивает функционал. Потом вместе выберете, что будет по силам накодить.
    Ответ написан
    3 комментария
  • Где хранить файлы для работы?

    exeto
    @exeto
    front-end developer
    Ответ написан
    Комментировать
  • Симистор и постоянный ток?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    Симистор/тиристор закрываются уменьшением проходящего тока ниже заданного уровня на время не менее определённого (чтобы заряды в запирающем слое успели рассосаться). Для тиристора годится также смена полярности протекающего тока, поскольку при переходе через ноль будет выполнено вышеупомянутое условие снижения тока на определённое время. До появления выключаемых тиристоров приходилось строить специальные выключательные схемы, когда на открытый тиристор разряжали конденсатор с зарядом противоположной полярности (для создания на короткое время закрывающего тока величиной не менее тока нагрузки). Но как сработает смена полярности с симистором - не знаю, есть подозрение, что не получится. Может, если уж ток постоянный, то возвратиться от симистора к тиристору? Тогда подойдёт вот такая простейшая выключательная схема:
    219327_html_m6cae0a38.png
    Левый тиристор и Rl - цепь нагрузки, правый (или транзистор) - выключатель. Эту схему я делал сам, работает нормально при правильном выборе элементов.
    Ответ написан
    Комментировать
  • На чём лучше вести локальную разработку?

    boramod
    @boramod
    Упрощенно.

    Вагрант — система управлением конфигурацией конкретной машины.
    Докер — запуск изолированных процессов на машине.

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

    В терминологии Докера есть Images и Containers.
    Image — образ, шаблон, на основе которого запускается Container.
    Image строится на основе какого-либо базового образа ОС.

    Container — сервис, запущенный и построенный на базе Image.

    Таким образом, вы можете построить несколько образов, например, образ для Nginx, образ для PHP, образ для MySQL. Вдобавок, вы можете построить несколько образо, для каждой желаемой версии PHP, MySQL и т.п.

    Каждый из этих образов будет иметь у себя в базе какую-либо ОС. Т.е., происходит изолирование окружения, на котором работает Docker.
    На базе построенных образов вы можете запускать Containers, т.е., непосредственно строить рабочее окружение. Каждый запущенный контейнер думает, что он запущен один, в образе наследуемой ОС. Но на самом деле, это всего лишь отдельный процесс, работающий на уровне ядра Linux, без виртуализации. Т.е., у вас нет накладных расходов на виртуальные машины. Изолирование контейнеров выполняется на уровне ядра.

    При всем этом, ваша базовая система остается чиста от устанавливаемых пакетов, свободна от неразберихи с библиотеками, версиями и т.п.

    Оба инструмента хороши. Но у каждого свое назначение.

    Vagrant — великолепный инструмент для конфигурации удаленных машин с нуля, VDS/VPS и т.п.
    Docker — великолепный инструмент для быстрого развертывания/переконфигурации рабочего окружения, практически без изменения системы, на которую он устанавливается.
    Ответ написан
    6 комментариев