На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (245) « Первая ... 172 173 [174] 175 176 ...  244 245  ( Перейти к последнему сообщению )  
> Есть ли будущее у DELPHI?
    Цитата D_KEY @
    Что значит нет, если память не удаляется и ненужные уже объекты продолжают занимать память?

    Откуда ты знаешь, что они не нужные? Может нужные, может я специально закинул туда пару объектов, чтобы их нельзя было (легко) удалить? Это может быть вполне нормальной ситуацией, или мне теперь что, держать еще один список, в котором только нужные объекты, чтоб можно было сравнить с основным? А кто будет следить за этим контрольным списком?

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

    Добавлено
    Цитата KILLER @
    Где?

    Откуда я знаю, где ты ее потерял. Так потерял или нет?


    Цитата KILLER @
    Так по твоей логике просто выходит что на С++ можно и вовсе не вызывать free/delete. Достаточно вызвать malloc/new и все. А когда программа завершиться, ОС всеравно освободит всю память выделенную программой, а если мы не вызывали очистку памяти, значит она нам нужна якобы, ну и что что мы ей больше не пользуемся...

    Нет, это по твоей логике выходит, будто ты не видишь разницы между наличием возможности удалить объект и ее отсутствием.

    Добавлено
    Цитата KILLER @
    Обоснуй.

    Цитата
    Other memory consumers

    Note that constantly increasing memory usage is not necessarily evidence of a memory leak. Some applications will store ever increasing amounts of information in memory (e.g. as a cache). If the cache can grow so large as to cause problems, this may be a programming or design error, but is not a memory leak as the information remains nominally in use.

    http://en.wikipedia.org/wiki/Memory_leak#O...emory_consumers

    Собственно пример Джека такой ситуацией является, особенно учитывая, что объект получает сообщение о событии и выполняет какие-то действия.
    Сообщение отредактировано: korvin -
      Цитата korvin @
      Нет, это по твоей логике выходит, будто ты не видишь разницы между наличием возможности удалить объект и ее отсутствием.

      Это как раз таки по твоей логике выходит что если программист забыл очситить память, то можно спихнуть на то, что:
      Цитата korvin @
      Откуда ты знаешь, что они не нужные? Может нужные, может я специально закинул туда пару объектов, чтобы их нельзя было (легко) удалить? Это может быть вполне нормальной ситуацией, или мне теперь что, держать еще один список, в котором только нужные объекты, чтоб можно было сравнить с основным? А кто будет следить за этим контрольным списком?

      Другими словами, откуда ты знаешь что это мемори лик? Может мне эта память еще пригодится, и я заведомо память не освободил?
        Цитата KILLER @
        Это как раз таки по твоей логике выходит что если программист забыл очситить память, то можно спихнуть на то, что:
        ...
        Другими словами, откуда ты знаешь что это мемори лик? Может мне эта память еще пригодится, и я заведомо память не освободил?

        смотри выше, я в предыдущем посте добавил цитату с вики.
          Цитата korvin @
          Откуда я знаю, где ты ее потерял. Так потерял или нет?

          Ну вот код что по твоей вики там был, что то типа:
          ExpandedWrap disabled
            for(int i = 0; i < 100; ++i)
            {
               int* p = new int[100];
            }

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

          Добавлено
          Цитата korvin @
          Собственно пример Джека такой ситуацией является, особенно учитывая, что объект получает сообщение о событии и выполняет какие-то действия.

          В примере Джека забыли прибить ссылку, когда она больше не нужна. А в приводимом тебе примере, забыли прибить память, когда она больше не нужна.

          Добавлено
          korvin, когда память кончица, как ее GC очистит ? Ссылки то валидные, но ненужны давным давно уже...
          Сообщение отредактировано: KILLER -
            Цитата KILLER @
            Ну вот код что по твоей вики там был, что то типа:
            ExpandedWrap disabled
              for(int i = 0; i < 100; ++i)
              {
                 int* p = new int[100];
              }

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

            Ты теряешь ссылки в цикле, у тебя остается указатель только на последний созданный массив, остальные 99 потерялись. Потерял ссылку -- получил утечку.
              Цитата KILLER @
              В примере Джека забыли прибить ссылку, когда она больше не нужна. А в приводимом тебе примере, забыли прибить память, когда она больше не нужна.

              Еще раз перечитай цитату с вики.
                Offtop
                Скрытый текст
                ExpandedWrap disabled
                  <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>korvin @ <time class="tag-quote__quoted-time" datetime="2012-11-19T11:06:06+00:00">19.11.12, 11:06</time></span><div class='quote '>Ты теряешь ссылки в цикле, у тебя остается указатель только на последний созданный массив,</div></div>

                а разве в С++ p будет доступна извне цикла???
                  Цитата Астарот @
                  никакой GC тебе не поможет и память ты засрешь. Условно мемликом это не будет

                  Именно, утечкой памяти называются не все возможные ошибки, приводящие к возрастанию потребления памяти, в вполне конкретный их вид.
                    Цитата Астарот @
                    Сообщение отклонено: Qraizer - менее минуты назад

                    Дурилка, это по сути одно и тоже, память под объектом останется неочищеной, суть мемори лик, иди на вики хоть сходи просветись, корвин несколько ссылок вон накидал.

                    Цитата korvin @
                    Еще раз перечитай цитату с вики.

                    Перечитываю:
                    Цитата

                    A memory leak, in computer science (or leakage, in this context), occurs when a computer program acquires memory but fails to release it back to the operating system.[1] In object-oriented programming, a memory leak may happen when an object is stored in memory but cannot be accessed by the running code.[2] A memory leak has symptoms similar to a number of other problems (see below) and generally can only be diagnosed by a programmer with access to the program source code.

                    Как раз обсуждаемый случай.
                    Сообщение отредактировано: Qraizer -
                      Цитата jack128 @
                      а разве в С++ p будет доступна извне цикла?

                      А, точно, значит все 100 в трубу. =)
                        Цитата korvin @
                        Ты теряешь ссылки в цикле, у тебя остается указатель только на последний созданный массив, остальные 99 потерялись. Потерял ссылку -- получил утечку.

                        Так мне эта память нужна только внутри цикла, я забыл внутри цикла вызвать delete, считай тело цикла - рабочая область моей переменной p.
                          Цитата
                          A memory leak, in computer science (or leakage, in this context), occurs when a computer program acquires memory but fails to release it back to the operating system.[1] In object-oriented programming, a memory leak may happen when an object is stored in memory but cannot be accessed by the running code.[2] A memory leak has symptoms similar to a number of other problems (see below) and generally can only be diagnosed by a programmer with access to the program source code.


                          Так лучше видно ? ;-)
                            Цитата KILLER @
                            Перечитываю:
                            Цитата

                            A memory leak, in computer science (or leakage, in this context), occurs when a computer program acquires memory but fails to release it back to the operating system.[1] In object-oriented programming, a memory leak may happen when an object is stored in memory but cannot be accessed by the running code.[2] A memory leak has symptoms similar to a number of other problems (see below) and generally can only be diagnosed by a programmer with access to the program source code.

                            Во-первых не ту читаешь, а во-вторых даже тут я тебе выделил курсивом, в случае Джека объект все еще доступен -- из списка.
                              Ладно, зайдем с другой стороны, вот это мем лик или нет?
                              ExpandedWrap disabled
                                int main()
                                {
                                   int* p = new int[10000];
                                  
                                   //! Work with p
                                   ...
                                   ...
                                 
                                   return 0;
                                }

                              А если я ее глобальной сделаю, это будет мемори лик?
                                Цитата korvin @
                                Откуда ты знаешь, что они не нужные?

                                Из того, что они не используются. Просто ссылка висит в каком-нибудь контейнере без надобности с т.з. логики.
                                Прочит уже про weak reference.

                                Цитата
                                Может нужные, может я специально закинул туда пару объектов, чтобы их нельзя было (легко) удалить?

                                Если специально, значит утечки и нет :-?
                                В чем твой вопрос? Ведь проблема утечек в случае GC как раз и связана с тем, что GC не в состоянии проникнуть в мозг и понять, что хотел программист.

                                Цитата
                                Сравни это с ситуацией, когда у тебя просто висят два зацикленных друг на друга объекта и больше на них ссылок нет.

                                Ситуация очень похожа и даже решается аналогично - слабыми ссылками.

                                Добавлено
                                Цитата jack128 @
                                Так лучше видно ? ;-)

                                Видно, что и на вики иногда пишут чушь :)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (245) « Первая ... 172 173 [174] 175 176 ...  244 245


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,1682 ]   [ 14 queries used ]   [ Generated: 21.12.25, 09:39 GMT ]