2012-05-18 2 views
5

В программе моей Windows' C++, я выделяю несколько небольших объектов на куче (в тысячах), вызвав новый CMyClass()предварительное выделение пространства памяти программ используют

Спектакль, кажется, получить пострадавших из-за этого.

Есть ли способ, чтобы предварительно выделить некоторую минимальную память в куче для использования программы, так что операционная система начинает выделять из этого предопределенных пространств, когда-либо я называю новых CMyClass() для повышения производительности?

Спасибо.

+0

См, например, Малый Распределитель объекта (http://books.google.com/books?id=aJ1av7UFBPwC&lpg=PA94&ots=YRdKZrRk50&dq=alexandrescu%20small%20object%20allocator&pg=PA94#v=onepage&q=alexandrescu%20small% 20object% 20allocator & f = false) –

+0

Учтите, что выделение тысяч объектов в куче при запуске может указывать на дефект дизайна. Может быть, нет, но что-то рассмотреть. –

ответ

8

Вы, кажется, ищет для пула памяти - http://www.codeproject.com/Articles/27487/Why-to-use-memory-pool-and-how-to-implement-it

Обратите внимание, что вы можете предварительно выделить память, а затем использовать размещение новый, чтобы предотвратить множественные распределения.

+0

Я бы действительно пошел на «новое место», очень элегантный подход. – demorge

Смежные вопросы