LINUX.ORG.RU

История изменений

Исправление hobbit, (текущая версия) :

Появление повторного delete - признак кривой архитектуры.

Вот у меня сейчас программист пишет программу, которая гоняет байты по сети и ещё кое-что с ними делает. Есть небольшой класс-менеджер, который всё это заводит и соединяет вместе. В принципе, его функции можно было бы оставить главному окну программы, ну западло нам было мешать логику и GUI.

Так вот, в первой версии этот менеджер создавался при начале обработки и уничтожался при её остановке. С одной стороны логично, с другой - как раз надо проверять, то ли объект есть, то ли его нет. Поэтому сейчас менеджер создаёся вместе с главным окном и уничтожается вместе с ним. А для запуска-остановки сделали отдельные методы start() и stop(). Проблемы больше нет.

Я не отрицаю, что бывают ситуации, когда объект создаётся и уничтожается в произвольном порядке, неоднократно, но такие ситуации куда более редки, чем может показаться. И да, в таких случаях незазорно руками обнулить указатель.

Ну и насколько я помню, в Delphi free тоже не обнулял указатель :)

Исправление hobbit, :

Появление повторного delete - признак кривой архитектуры.

Вот у меня сейчас программист пишет программу, которая гоняет байты по сети и ещё кое-что с ними делает. Есть небольшой класс-менеджер, который всё это заводит и соединяет вместе. В принципе, его функции можно было бы оставить главному окну программы, ну западло нам было мешать логику и GUI.

Так вот, в первой версии этот менеджер создавался при начале обработки и уничтожался при её остановке. С одной стороны логично, с другой - как раз надо проверять, то ли объект есть, то ли его нет. Поэтому сейчас менеджер создаёся вместе с главным окном и уничтожается вместе с ним. А для запуска-остановки сделали отдельные методы start() и stop(). Проблемы больше нет.

Я не отрицаю, что бывают ситуации, когда объект создаётся и уничтожается в произвольном порядке, неоднократно, но такие ситуации куда более редки, чем может показаться. И да, в таких случаях незазорно рукавми обнулить указатель.

Ну и насколько я помню, в Delphi free тоже не обнулял указатель :)

Исходная версия hobbit, :

Появление повторного delete - признак кривой архитектуры.

Вот у меня сейчас программист пишет программу, которая гоняет байты по сети и ещё кое-что с ними делает. Есть небольшой класс-менеджер, который всё это заводит и соединяет вместе. В принципе, его функции можно было бы оставить главному окну программы, ну западло нам было мешать логику и GUI.

Так вот, в первой версии этот менеджер создавался при начале обработки и уничтожался при её остановке. С одной стороны логично, с другой - как раз надо проверять, то ли объект есть, то ли его нет. Поэтому сейчас менеджер создаёся вместе с главным окном и уничтожается вместе с ним. А для запуска-остановки сделали отдельные методы start() и stop(). Проблемы больше нет.

Я не отрицаю, что бывают ситуации, когда объект создаётся и уничтожается в куда более произвольном порядке, но такие ситуации куда более редки, чем может показаться. И да, в таких случаях незазорно рукавми обнулить указатель.

Ну и насколько я помню, в Delphi free тоже не обнулял указатель :)