tag:blogger.com,1999:blog-10303035.post5979232836035496603..comments2024-02-04T23:20:04.066+03:00Comments on Алёна C++: Статья про управление памятьюAlenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-10303035.post-24324128134904002702011-02-27T20:48:08.651+03:002011-02-27T20:48:08.651+03:00Спасибо за статью, сильно удивился очевидной в общ...Спасибо за статью, сильно удивился очевидной в общем-то идее хранения списка свободных элементов пула в самом пуле.<br /><br />Сылка по теме - выступление Андрея Плахова на КРИ 2008, озаглавленное "Дзэн": <br />http://www.kriconf.ru/2010/rec/KRI_2008_Programming_19apr_Neptune_03_Plahov_Andrei_Vogster.ogg. Было где-то еще видео, но не смог найти.<br /><br />Мы у себя потихоньку стараемся расти в этом направлении - если в игре может быть максимум 100 пуль, сразу заведем выделим пул подо все 100. Если вылетает 101ая пуля, то она не вылетает..Mikhail Barghttps://www.blogger.com/profile/13610769544208096841noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-89787688954216019632011-02-24T15:57:21.238+03:002011-02-24T15:57:21.238+03:00Алёна, спасибо за ответы!Алёна, спасибо за ответы!Rnoreply@blogger.comtag:blogger.com,1999:blog-10303035.post-82350078345073998392011-02-22T10:29:42.227+03:002011-02-22T10:29:42.227+03:00R
Алёна,
но ведь для возможности передвижения элем...<b>R</b><br /><i>Алёна,<br />но ведь для возможности передвижения элементов понадобится косвенная адресация вместо прямой (например указатель на указатель), что будет менее эффективно - часто ли такое используется?</i><br /><br />Я такое не встречала. Просто предложила как вариант.<br /><br /><i>Получается, в геймдеве чуть ли не под каждый чих делается менеджер памяти?</i> <br /><br />Репрезентативной статистики у меня нет. Скажем так, свои менеджеры памяти в геймдеве встречаются довольно часто. <br /><br /><i>Сколько же их тогда существенно различных (не только по размеру блока, по алгоритму и т.п.) в среднестатистической игре, если не секрет?</i><br /><br />Из того, что я видела - один. Причем не один на игру, на один на компанию. Часто в компании код на самом низком уровне можно заново использовать в разных играх.Alenahttps://www.blogger.com/profile/09389124127364799922noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-67074455942050622512011-02-21T21:28:21.852+03:002011-02-21T21:28:21.852+03:00Алёна,
но ведь для возможности передвижения элемен...Алёна,<br />но ведь для возможности передвижения элементов понадобится косвенная адресация вместо прямой (например указатель на указатель), что будет менее эффективно - часто ли такое используется?<br /><br />Получается, в геймдеве чуть ли не под каждый чих делается менеджер памяти? Сколько же их тогда существенно различных (не только по размеру блока, по алгоритму и т.п.) в среднестатистической игре, если не секрет?Rnoreply@blogger.comtag:blogger.com,1999:blog-10303035.post-54798400349107714212011-02-21T10:25:35.131+03:002011-02-21T10:25:35.131+03:00R
И если дальше этот пул не будет использоваться,...<b>R</b><br /><i> И если дальше этот пул не будет использоваться, то так и останется 97Мб зарезервированной но неиспользуемой памяти, или же это как-то обходится?</i><br /><br />Менеджер памяти пишется под конкретные задачи. И если возможна ситуация, когда у нас осталось 3 элемента, размазанных по пулу, то получается, что в менеджере что-то не продумано. <br />Можно двигать элементы в ситуации "у нас мало <br />элементов и они размазаны по пулу".<br />В геймдеве часто встречается ситуация "у нас всего три элемента в пуле, но уровень уже закончился, они нам не нужны, мы освобождаем весь пул целиком".<br />Ну и наверняка можно еще чего-нибудь придумать.Alenahttps://www.blogger.com/profile/09389124127364799922noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-71991530546427731822011-02-21T05:04:16.597+03:002011-02-21T05:04:16.597+03:00А не мог бы кто-нибудь на пальцах объяснить, как о...А не мог бы кто-нибудь на пальцах объяснить, как обращаются с пиковыми аллокациями в пуле? По моему представлению, при выделении, например, 100 элементов по 1Мб, а затем освобождении 97 из них, с оставшимися 3 на случайных позициях, получаем дикую фрагментацию памяти с невозможностью освободить выделенные 100Мб. И если дальше этот пул не будет использоваться, то так и останется 97Мб зарезервированной но неиспользуемой памяти, или же это как-то обходится?Rnoreply@blogger.comtag:blogger.com,1999:blog-10303035.post-67495190922579700732011-02-20T23:32:52.259+03:002011-02-20T23:32:52.259+03:00mkevac
Существуют ли готовые общепризнанные библио...<b>mkevac</b><br /><i>Существуют ли готовые общепризнанные библиотеки для управления памятью в сфере разработки игр? Или все пишут свои велосипеды?</i><br /><br />Свои велосипеды, по велосипеду на компанию. В какой-то мере это оправдано тем, что требования к менеджеру памяти зависят от конкретной игры и от платформы.Alenahttps://www.blogger.com/profile/09389124127364799922noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-50576372133130926082011-02-20T22:36:31.155+03:002011-02-20T22:36:31.155+03:00да и не только в разработке игр свои велосипеды.
...да и не только в разработке игр свои велосипеды.<br /><br />третий большой и старый проект и третий менеджер памяти, свой и недоделаный.<br /><br />очень хочется заменить это на что-нибудь стандартное и отлаженое и выкинуть эту кучу подозрительного кода.Anonymoushttps://www.blogger.com/profile/17778107056998652381noreply@blogger.comtag:blogger.com,1999:blog-10303035.post-85463881823983317392011-02-20T22:17:51.047+03:002011-02-20T22:17:51.047+03:00Существуют ли готовые общепризнанные библиотеки дл...Существуют ли готовые общепризнанные библиотеки для управления памятью в сфере разработки игр? Или все пишут свои велосипеды?<br /><br />Свои способы, например, есть и в glib и в apr-lib.mkevachttps://www.blogger.com/profile/12711347460688873481noreply@blogger.com