Пул из heap (куч). Имеет ли это смысл?
От: TheBeginner  
Дата: 11.06.23 04:37
Оценка:
Например есть приложение, создающее (HeapCreate) от нескольких десятков до 200 или более куч для размещения в каждой куче объектов своего размера с возможностью освободить их все разом (HeapDestroy). Это одна из задач для чего собственно собственные кучи и создаются.
Имеет ли смысл объединить их во что-то вроде пула таким образом, чтобы при ошибке создания новой кучи (HeapCreate) или выделения памяти (HeapAlloc, HeapReAlloc), память выделять из другой кучи пула. Если пока не рассматривать вопросы вроде хранения указателей на блоки, выделенные не своей куче для возможности удаления кучи из пула, а определится — имеет это смысл и нет?
Насколько помню — HeapCreate резервирует 1 Мб адресного процесса. Вызов HeapCreate в цикле на 32 битном процессе создает 20000 куч.
Насколько часто HeapCreate/HeapAlloc заканчиваются неудачно? Это связано только с исчерпанием адресного пространства, недостатком физической памяти, порчей внутренних структур данных кучи или еще что-то?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.