Вот вспоминаются мне разные топики, в которых люди говорят как хорошо использовать в проектах смарт поинтеры из библиотеки локи. Хотел добавить я их в свой проект(лень было нужные файлы дергать из буста, авесь буст тянуть громоздко), и вот что выяснилось. Оказывается нельзя создавать глобальные(статические) объекты Loki::SmartPtr<Object>, ну или даже внутри глобальных объектов. Вот например MFC активно использует глобальный объект класса приложения, так туда тоже нельзя добавить например такую строку std::vector<SmartPtr<Object>>. А собака порылась в том, что данный класс активно использует SmallObject, это такие объекты которые создаются в специальном буффере, а этот буффер удаляется через функцию atexit, вызов коллбека котрого происходит ДО вызова всех деструкторов глобальных объектов, и поэтому происходит ассерт, т.к. этот буффер используется еще.
ЗЫ: Вывод: использовать библиотеку можно только в консольных программах, где вся программа написана в одной функции main.
Здравствуйте, Denwer, Вы писали:
>А собака порылась в том, что данный класс активно использует SmallObject, это такие объекты которые создаются в специальном буффере, а этот буффер >удаляется через функцию atexit, вызов коллбека котрого происходит ДО вызова всех деструкторов глобальных объектов, и поэтому происходит ассерт, т.>к. этот буффер используется еще.
А через соответствующий полиси настроить логику удаления там нельзя?
ЗЫ
самому смотреть лень
Re[2]: Вы еще используете Loki? Тогда мы идем к вам.
Здравствуйте, korzhik, Вы писали:
K>Здравствуйте, Denwer, Вы писали:
>>А собака порылась в том, что данный класс активно использует SmallObject, это такие объекты которые создаются в специальном буффере, а этот буффер >удаляется через функцию atexit, вызов коллбека котрого происходит ДО вызова всех деструкторов глобальных объектов, и поэтому происходит ассерт, т.>к. этот буффер используется еще.
K>А через соответствующий полиси настроить логику удаления там нельзя?
K>ЗЫ K>самому смотреть лень
Из серии, взять что то и доработать самому напильником. Я такие варианты не особенно уважаю, т.к. малоли какие измененения будут в след версии локи, а во-вторых малоли где еще могуть встречаться эти SmallObject.
Re[5]: Вы еще используете Loki? Тогда мы идем к вам.
Здравствуйте, Denwer, Вы писали:
D>Здравствуйте, korzhik, Вы писали:
D>Из серии, взять что то и доработать самому напильником. Я такие варианты не особенно уважаю, т.к. малоли какие измененения будут в след версии локи, а во-вторых малоли где еще могуть встречаться эти SmallObject.
хозяин барин, как говорится.
но стратегии для того и придумали чтобы можно было немножечко дорабатывать напильничком.
Re[5]: Вы еще используете Loki? Тогда мы идем к вам.
Здравствуйте, Denwer, Вы писали:
D>Здравствуйте, korzhik, Вы писали:
D>Из серии, взять что то и доработать самому напильником. Я такие варианты не особенно уважаю, т.к. малоли какие измененения будут в след версии локи, а во-вторых малоли где еще могуть встречаться эти SmallObject.
Вся Loki построена именна на такой идеологии: если тебя что-то не устраивает, допиши сам. Это тебе и позволяют полиси сделать. Почитай книгу Александреску насчёт этого .
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re[6]: Вы еще используете Loki? Тогда мы идем к вам.
Здравствуйте, Mr. None, Вы писали:
MN>Здравствуйте, Denwer, Вы писали:
D>>Здравствуйте, korzhik, Вы писали:
D>>Из серии, взять что то и доработать самому напильником. Я такие варианты не особенно уважаю, т.к. малоли какие измененения будут в след версии локи, а во-вторых малоли где еще могуть встречаться эти SmallObject.
MN>Вся Loki построена именна на такой идеологии: если тебя что-то не устраивает, допиши сам. Это тебе и позволяют полиси сделать. Почитай книгу Александреску насчёт этого .
Если бы мне нужна другая идея по поводу полиси, это одно, но когда мне нужна таже самая идея, но которая не работает это уже другое.
ЗЫ: А в книге, насколько я помню, эта ситуация не описывалась, т.е.баговая реализация RefCounted.
Re[7]: Вы еще используете Loki? Тогда мы идем к вам.
Здравствуйте, Denwer, Вы писали:
MN>>Вся Loki построена именна на такой идеологии: если тебя что-то не устраивает, допиши сам. Это тебе и позволяют полиси сделать.
D>Если бы мне нужна другая идея по поводу полиси, это одно, но когда мне нужна таже самая идея, но которая не работает это уже другое.
Она не работает так, как это надо вам, поэтому это уже другая идея.
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.