На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 403 404 [405] 406 407 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата korvin @
    Цитата D_KEY @
    Во-первых, при delete деструктор вызывается
    Во-вторых, мы в этом случае лишаемся автоматического подсчета ссылок :)
    Но деструктор вызовется, если, конечно, нет утечки.
    Кстати, зачем отказываться от полуавтоматического управления памятью? Тем более, что циклы не так уж часто встречаются, а тулзы для их поиска имеются.

    Во-первых, delete можно и забыть вызвать, не учесть какой-нибудь случай.
    Во-вторых, само собой, но ведь он не всегда нужен.
    Затем, что он не эффективен.

    Если уж ты решил управлять памятью, то и управляй, отсутствие delete в этом случае - просто бага.
    Если тебе не нужен подсчет ссылок, то значит у тебя в каждый момент времени только один владелец - используй unique_ptr(auto_ptr из старого стандарта), он никакого оверхэда не привносит.
    Подсчет ссылок достаточно эффективен. И если учесть, что зачастую достаточно и unique_ptr, то явный delete стал большой редкостью.

    Добавлено
    Цитата Qraizer @
    Цитата D_KEY @
    Тут сигналы, так что таких проблем нет - их обработка отделена от основного кода.
    У сигналов есть агромадное ИМХО неудобство перед SEH - невозможность пользоваться ими структрурно

    А это бывает нужно? Можешь пример какой-нибудь привести?
      Цитата Qraizer @
      Деструкторы не вызываются потому, что оно имплементэйнш-дефинед. Стандарт не определяет, как аппаратные сбои должны быть представлены в C++EH, системные исключения слишком уж некроссплатформенны. Но оно настраивается. В MSVC это ключик -EHa (Exception Handling asyncronuous). По дефолту использовать нет смысла, т.к. у SEH и C++EH различное назначение, и они очень редко пересекаются в приложениях на одном и том же уровне абстракции представления предметной области. Просто оно нехило увеличивает оверхед на размер типостатической информации, генерируемой компилятором для SEH-кадров. Обычно восстребовано только на этапе отладки или в техподдержке. По дефолту используют -EHs (Exception Handling syncronuous), что означает, что системные исключения никогда не затрагивают стековые кадры, содержащие объекты с нетривиальными деструкторами.

      да это все понятно(ужепримерно я понял как оно работает, после некоего гимора с этим...). Я просто в этих SEH еще не очень силен, но реально когда куча классов особенно, когда работаешь с MFC, довольно тяжело локализовать ошибку, у меня просто был случай, когда приложение падало в релизе, при этом не падало в дебаге, я может просто еще не понял как работать с этими SEH исключениями, но проблему решал трейсами. А если допустим поставить ключик -EHa, у той же студии, то реально ли как то стек получить при вылете? (я честно, не пробовал просто...)
      Вот чем юникс рулит, это то что он создает при падении core файл(дамп процеса), который уже можно посмотреть, кто где и зачем упал, и собственно это экономит уйму времени.

      Добавлено
      Цитата Qraizer @
      Нормальный компилятор, нормально портированный под платформу, должен обеспечивать полноценную её поддержку, не находишь? Без опциёв - используй трансляцию SEH в C++EH, WinAPI и это позволяет.

      Если чо речь сугубо об MSVS пока что.
      Сообщение отредактировано: KILLER -
        Вспомни тему с niXman-ом в главной роли. Если SEH в готовых приложениях применять для того, для чего он предназначается, то ставить обработчики отказов требуется локально. С устновкой же сигналов та же ситуация, что для динамических объектов - кто-то сделал new, кто-то должен сделать delete, и без владельцев тут сложно.
          Цитата KILLER @
          А если допустим поставить ключик -EHa, у той же студии, то реально ли как то стек получить при вылете?

          Я так понял, что да, если бряк поставить, гденибудь в деструкторе?!
            Цитата KILLER @
            Вот чем юникс рулит, это то что он создает при падении core файл(дамп процеса), который уже можно посмотреть, кто где и зачем упал, и собственно это экономит уйму времени.
            А для тебя новость, что MSVC это умеет не хуже?
              Цитата Qraizer @
              Вспомни тему с niXman-ом в главной роли. Если SEH в готовых приложениях применять для того, для чего он предназначается, то ставить обработчики отказов требуется локально. С устновкой же сигналов та же ситуация, что для динамических объектов - кто-то сделал new, кто-то должен сделать delete, и без владельцев тут сложно.

              Qraizer, я работал с SEH(имел место быть геморой), я просто не до конца понимаю как оно работает, ибо опыта с этим очень мало. Поэтому пытаюсь выудить максимально больше инфы на будущее, если чо... :ph34r: Поэтому не обессудьте...

              Добавлено
              Цитата Qraizer @
              А для тебя новость, что MSVC это умеет не хуже?

              Да! Как ? Или может мы о разном?

              Добавлено
              Qraizer, только учти что MSVS - компиль, а unix - ОС...

              Добавлено
              Цитата KILLER @
              Qraizer, только учти что MSVS - компиль, а unix - ОС...

              Я имею ввиду, что в юниксе не нужно трогать компиль для получения core файла, его система сама создаст. А в винде с msvs как? Мне очень интересно, честно :)

              Добавлено
              Цитата KILLER @
              Я имею ввиду, что в юниксе не нужно трогать компиль для получения core файла, его система сама создаст. А в винде с msvs как? Мне очень интересно, честно

              Дамп памяти сделать вручную разве что, ну а потом этот дамп разргребать, это я уже вкурил на своей шкуре... Может как то можно по другому?
                Цитата KILLER @
                ...Поэтому не обессудьте
                То про "структурную обработку сигналов" было.
                Цитата KILLER @
                А в винде с msvs как?
                Лопай неперехваченное исключение и вызывай там MiniDumpWriteDump(). Там столько всего записать можно, что mini- смотрится как сарказм. Потом казуешь отладчику в этот дамп и наслаждаешься картинкой прям на интересный момент.
                  Цитата Qraizer @
                  То про "структурную обработку сигналов" было.

                  да ты не понял, то я написал к тому, что к теме оно отношения не имеет.

                  Цитата Qraizer @
                  Лопай неперехваченное исключение и вызывай там MiniDumpWriteDump(). Там столько всего записать можно, что mini- смотрится как сарказм. Потом казуешь отладчику в этот дамп и наслаждаешься картинкой прям на интересный момент.

                  Опана, нада будет покурить этот MiniDumpWriteDump на досуге, спасибо огромное :blush: :yes:

                  Добавлено
                  Я просто раньше извращался всякими стороними прогами, делал дамп ну и мудохался с ним уже в студии, а с SEH - так вообще ахтунг, трейсы, трейсы, трейсы... нада будет обязательно пощупать эту фишку... Не знал обь этом...
                    Цитата
                    А в винде с msvs как?

                    Начиная с Висты можно коре дампы прямо из диспетчера задач создавать, даже студия не нужна.

                    Если есть какой дедлок - дамп незаменим, очень прикольная штука, выручала сколько раз. А вот что бы просто узнать "а где же грохнулось" - вообще частенько достаточно простого map файла.
                    Сообщение отредактировано: Бобёр -
                      Цитата korvin @
                      Цитата
                      Почему? В деструкторе Connection'а - он его закроет, а вызовеца деструктор, либо когда на него не будут ссылаца, либло при исключении...

                      Как он узнает, что на него не ссылаются, если ссылка не умная?

                      shared_ptr - это как раз и есть класс над "не умными ссылками"

                      Добавлено
                      Цитата Бобёр @
                      Начиная с Висты можно коре дампы прямо из диспетчера задач создавать, даже студия не нужна.

                      Больше интересует под XP и Win7. Под Win7 в релизе с отладочной инфой такое возможно? если да то как? ОС сама генерит? И куда?
                      Сообщение отредактировано: KILLER -
                        Цитата
                        Под Win7 в релизе с отладочной инфой такое возможно? если да то как?

                        Ну, вроде так же - из диспетчера задач. В XP тоже есть способы, но придётся извращаться, штатными средствами вроде бы никак.

                        Добавлено
                        Цитата
                        ОС сама генерит? И куда?

                        Генерит по просьбе :). В Мои Документы, ну или где то там вокруг, точно не помню
                          Цитата Бобёр @
                          А вот что бы просто узнать "а где же грохнулось" - вообще частенько достаточно простого map файла.

                          map файл - этож генерит линкер его, и туда пишет ошибки линковки, или я не в ту сторону полез?
                          ЗЫЖ с map файлами работал только в юниксе, в винде генерил както в студии, но не помню уже что это, вроде тоже самое? :huh:

                          Добавлено
                          Цитата Бобёр @
                          Генерит по просьбе . В Мои Документы, ну или где то там вокруг, точно не помню

                          А все, я понял... просто дамп процесса делает...

                          Добавлено
                          Цитата KILLER @
                          А все, я понял... просто дамп процесса делает...

                          Просто плохо то, что вручную его делать нужно, и толку нема, если уже упало... А в юниксе наоборот, упало - ну и фиг, при падении оно генерит дамп процесса автоматом...
                            Цитата
                            map файл - этож генерит линкер его, и туда пишет ошибки линковки, или я не в ту сторону полез?

                            Докладываю. Мап файл - его генерация обычно отключена по умолчанию - это такой список всех процедур и их адресов. Ну тебе приходит скриншот - "упало при обращении по адресу такому то". Ты берёшь адрес, вычисляешь первую функцию, у которой адрес меньше, чем адрес на скриншоте - и вот, ты знаешь точно, какая процедура упала. Даже в релизе без отладочной инфы. Ну и дальше сам понимаешь - если люди умные и не пишут процедуры длиннее 30-и строк - можно поугадывать, что же именно упало, какая из 30 строк (можно ориентироваться на разницу адресов), если же процедура длинная, то сами виноваты :)

                            Добавлено
                            Цитата
                            Просто плохо то, что вручную его делать нужно, и толку нема, если уже упало...

                            Почему же нема, стек то вытащить можно.

                            Добавлено
                            Цитата
                            А в юниксе наоборот, упало - ну и фиг, при падении оно генерит дамп процесса автоматом...

                            Ну, как бы 99% пользователям винды это нафиг не надо.
                              Цитата Бобёр @
                              у и дальше сам понимаешь - если люди умные и не пишут процедуры длиннее 30-и строк - можно поугадывать

                              мда... последнюю функцию которую мне показал мой сотрудник, была в районе ~1000 строк...коментарии излишни :D

                              Цитата Бобёр @
                              Ну тебе приходит скриншот - "упало при обращении по адресу такому то". Ты берёшь адрес, вычисляешь первую функцию, у которой адрес меньше, чем адрес на скриншоте - и вот, ты знаешь точно, какая процедура упала.

                              А можно по подробнее плз :blush: Я примерно понял, но хочеца разобраца...
                              Сообщение отредактировано: KILLER -
                                Цитата
                                мда... последнюю функцию которую мне показал мой сотрудник, была в районе ~1000 строк...rjvtynfhbb bpkbiyb levf.& :D

                                Будь готов, что из релизных скриншотов ничего узнать будет нельзя :), а узнавать видимо, придётся, судя по длинне процедуры....
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 403 404 [405] 406 407 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.5427 ]   [ 15 queries used ]   [ Generated: 30.07.26, 04:14 GMT ]