Если интересны детали - приложение загружало тучу плагинов. Часть плагинов использовали менеджер памяти приложения, часть пользовалось обычным си рантаймом. Память выделялась по мере надобности, увеличивая кеш программы. В случае нехватки выделенной памяти, кеш программы пополнялся все новыми и новыми выделенными фрагментами памяти. Если системной памяти нет, то различными алгоримами перезапускался рендер до тех пор, пока можно было выделить вообще что-то. Кеш чистился. Индикатор загрузки системной памяти (в винде можно мониторить это) всегда показывал значения вблизи максимально-возможной для x86 процесса. Все это заодно работало и в купе с COM, где тоже могла выделяться своя память. Фрагментации памяти скорей всего не было, потому что размеры почти всегда выделялись примерно равными кусками и все работало с кучей разных тредов. Поскольку не все плагины были адаптированы, максимальный размер подбирался, чтобы случайно в этих плагинах память не была исчерпана за счет мелких аллокаций - иначе просто этот плагин падал - там не было обработок нехватки памяти. Т.е. все работало на верхней границе памяти и начиналось все с запуска си аллокатора, который всегда сообщал, что памяти нет. При рендере очередного фрейма часть плагинов перезапускалось, где свой аллокатор и выделял и освобождал память. Туча тредов, но все работало стабильно.