Сообщение Re[4]: Достаточно ли знать С без знания С++ для устройства н от 07.09.2014 1:59
Изменено 07.09.2014 2:06 eskimo82
S>раз здесь собрались матерые Сишники
S>подскажите пожалуйста как лучше решить такую задачу на С
S>нужен динамический список (лучше array но можно list)
S>который динамически меняет размер от 0 до 0.5G +- каждые несколько секунд
Можно подробнее — что за список ?
S>софтина серверная 24x7, просто зарезервировать полгига (может не хватить) на все время работы программы незлья пользователь не поймет этого
Что за система ? Можно зарезервировать часть виртуального адресного пространства, но не коммитить физические страницы.
Линукс, кстати, так и делает — пока в страницу ничего не запишеш, её и как бы и нет. Так что там можеш спокойно аллок сделать и на полгига, но если физической памяти (вместе со свопом) хватать не будет то могут и прибить.
S>подскажите пожалуйста как лучше решить такую задачу на С
S>нужен динамический список (лучше array но можно list)
S>который динамически меняет размер от 0 до 0.5G +- каждые несколько секунд
Можно подробнее — что за список ?
S>софтина серверная 24x7, просто зарезервировать полгига (может не хватить) на все время работы программы незлья пользователь не поймет этого
Что за система ? Можно зарезервировать часть виртуального адресного пространства, но не коммитить физические страницы.
Линукс, кстати, так и делает — пока в страницу ничего не запишеш, её и как бы и нет. Так что там можеш спокойно аллок сделать и на полгига, но если физической памяти (вместе со свопом) хватать не будет то могут и прибить.
S>раз здесь собрались матерые Сишники
S>подскажите пожалуйста как лучше решить такую задачу на С
S>нужен динамический список (лучше array но можно list)
S>который динамически меняет размер от 0 до 0.5G +- каждые несколько секунд
Можно подробнее — что за список ?
S>софтина серверная 24x7, просто зарезервировать полгига (может не хватить) на все время работы программы незлья пользователь не поймет этого
Что за система ? Можно зарезервировать часть виртуального адресного пространства, но не коммитить физические страницы.
Линукс, кстати, так и делает — пока в страницу ничего не запишеш, её и как бы и нет. Так что там можеш спокойно аллок сделать и на полгига, но если физической памяти (вместе со свопом) хватать не будет то могут и прибить.
если просто нужен большой массив — можно приметить патерн "разреженный массив". Т.е. весь массив разбивается на страницы (или на более глубокую иерархию) и аллоцирууются только нужные страницы. Кстати, одну из реализаций можно подсмотреть в ядре — там есть специальный обьект.
S>подскажите пожалуйста как лучше решить такую задачу на С
S>нужен динамический список (лучше array но можно list)
S>который динамически меняет размер от 0 до 0.5G +- каждые несколько секунд
Можно подробнее — что за список ?
S>софтина серверная 24x7, просто зарезервировать полгига (может не хватить) на все время работы программы незлья пользователь не поймет этого
Что за система ? Можно зарезервировать часть виртуального адресного пространства, но не коммитить физические страницы.
Линукс, кстати, так и делает — пока в страницу ничего не запишеш, её и как бы и нет. Так что там можеш спокойно аллок сделать и на полгига, но если физической памяти (вместе со свопом) хватать не будет то могут и прибить.
если просто нужен большой массив — можно приметить патерн "разреженный массив". Т.е. весь массив разбивается на страницы (или на более глубокую иерархию) и аллоцирууются только нужные страницы. Кстати, одну из реализаций можно подсмотреть в ядре — там есть специальный обьект.