Re[4]: Достаточно ли знать С без знания С++ для устройства н
От: eskimo82  
Дата: 07.09.14 01:59
Оценка:
S>раз здесь собрались матерые Сишники
S>подскажите пожалуйста как лучше решить такую задачу на С
S>нужен динамический список (лучше array но можно list)
S>который динамически меняет размер от 0 до 0.5G +- каждые несколько секунд
Можно подробнее — что за список ?

S>софтина серверная 24x7, просто зарезервировать полгига (может не хватить) на все время работы программы незлья пользователь не поймет этого

Что за система ? Можно зарезервировать часть виртуального адресного пространства, но не коммитить физические страницы.
Линукс, кстати, так и делает — пока в страницу ничего не запишеш, её и как бы и нет. Так что там можеш спокойно аллок сделать и на полгига, но если физической памяти (вместе со свопом) хватать не будет то могут и прибить.

Если просто нужен большой массив — можно приметить патерн "разреженный массив". Т.е. весь массив разбивается на страницы (или на более глубокую иерархию) и аллоцирууются только нужные страницы. Кстати, одну из реализаций можно подсмотреть в ядре — там есть специальный обьект.
Если массив "дышит" с какой-то переиодичностью, то хвостовые страницы можно отдавать системе с некотрым таймаутом, большим чем эта периодичность.
Отредактировано 07.09.2014 2:08 eskimo82 . Предыдущая версия . Еще …
Отредактировано 07.09.2014 2:06 eskimo82 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.