Каковы недостатки выделения памяти с использованием mmap
(с MAP_PRIVATE и MAP_ANONYMOUS) по сравнению с использованием malloc
? Для данных в области функций я бы все равно использовал стековую память и поэтому не malloc.
Один из недостатков, который приходит на ум, - это динамические структуры данных, такие как деревья и связанные списки, где вам часто требуется выделять и освобождать небольшие порции данных. Использование mmap
будет дорогостоящим по двум причинам: одна для выделения с гранулярностью 4096 байт, а другая для требования сделать системный вызов.
Но как вы думаете, в других случаях malloc
лучше, чем mmap
? Во-вторых, переоцениваю ли я недостаток mmap
для динамических структур данных?
Одно преимущество mmap
перед malloc
Я могу думать о том, что память немедленно возвращается ОС, когда вы делаете munmap
, тогда как с malloc/free
, я думаю, память до точки останова сегмента данных не вернулся, но сохранил для повторного использования.