Войти
ФлеймФорумПрограммирование

Список модных прог в которых shared_ptr и weak_ptr и unordered_map хорошо зашли (17 стр)

Страницы: 112 13 14 15 16 17
#240
13:13, 23 авг. 2017

L
> weak_ptr - компаньён, не владеющий объектом, вместе они - мощная концепция,
> использующаяся в GC многих языков

Про смарты ни слова - но как раз в языках с настоящим GC слабые ссылки не использовал никогда и там это скорее просто вишенка на торте возможностей, чем реальная необходимость.


#241
14:10, 23 авг. 2017

private ctor
friend std::make_shared

#242
14:14, 23 авг. 2017

=A=L=X=
> но как раз в языках с настоящим GC слабые ссылки не использовал никогда и там
> это скорее просто вишенка на торте возможностей, чем реальная необходимость.

Ну, просто вишенка на тортике чтобы не получить циклики

#243
14:16, 23 авг. 2017

innuendo
> Ну, просто вишенка на тортике чтобы не получить циклики

Речь про языки с нормальным GC, т.е. типа Java, там нет проблемы цикликов как у рефкаунтов.

#244
14:21, 23 авг. 2017

Нужен шаред_ПТР, который при циклических ссылках вызывает гц

#245
14:30, 23 авг. 2017

*Lain*
> friend std::make_shared

Судя по тому что в первых трёх результатах гугла никто до этого не может допереть на нескольких страницах всё не так просто и какие-то кишки make_shared мешаются и тут. "Решения" одно другого краше. :)

#246
14:31, 23 авг. 2017

=A=L=X=
> Речь про языки с нормальным GC, т.е. типа Java, там нет проблемы цикликов как у
> рефкаунтов.

я же про регистрацию в всяких там глобальных словарях и тд, когда две сильные ссылки на дают сработать GC

#247
14:33, 23 авг. 2017

innuendo
> я же про регистрацию в всяких там глобальных словарях и тд, когда две сильные
> ссылки на дают сработать GC

Ну я помню как у кого то робот повис на яве потому что в логах накопилось овердохрена ссылок на сущности из кишок программы, да да.
Почему нельзя было просто очищать устаревшие записи лога я так и не понял.
P.S.
Ну или в чём смысл лога рандомным образом теряющего информацию тоже не особо понятно.

#248
15:27, 23 авг. 2017

*Lain*
> friend std::make_shared
Так сделать нельзя. Внутри используется класс-враппер который вызывает new

Не, ну на самом деле всё возможно но так не надо, точно не надо ))

В студии:

class Test {
public:
  template<class T, class... Types>
  friend std::shared_ptr<T> std::make_shared(Types&&... args); //Было бы классно, но этого не достаточно

  template<class T>
  friend class std::_Ref_count_obj; //Зависит от писателей STL, везде по разному названо т.к. не публичный апи, фуфу, так не делай

protected:
  Test(int a, float b) {
    std::cout << a << b;
  }
};
#249
16:49, 23 авг. 2017

=A=L=X=
> Почему нельзя было просто очищать устаревшие записи лога я так и не понял.
Потому что или лог получится очень коротким, или Томми будет отвлекаться на сбор мусора и, возможно, въедет в стену.

#250
20:37, 23 авг. 2017

=A=L=X=
> Судя по тому что в первых трёх результатах гугла никто до этого не может допереть
Чувак. Я даже на гейдеве видел несколько решений вполне рабочих

#251
21:27, 23 авг. 2017

*Lain*

Ну ты сравнил. Местную илитно-моральную публику и загнивающий запад в лице гугла и SO. За это =A=L=X='у и бан можно отхватить.

Страницы: 112 13 14 15 16 17
ФлеймФорумПрограммирование

Тема в архиве.