В некоторых книэках употребляется такая штука как собственный класс распределения памяти. где он вообще используется? только в шаблонах я правильно понимаю? есть вот стандартный класс аллокатор.. он используется в STL, а где можно посмотреть как он написан? в какой либе? у меня vs 2008.. что вообще про это имеет смысл прочитать? и в чем вообще суть этих менеджеров распределения памяти? почему бы не использовать new и delete? и еще вопрос .. на каком то форуме сказали что оператор new вызывает cишный оператор malloc(). это так? заранее всем спасибо за ответы.))
Здравствуйте, r1der, Вы писали:
R>В некоторых книэках употребляется такая штука как собственный класс распределения памяти. где он вообще используется? только в шаблонах я правильно понимаю?
Ну почему только в них? Можно использовать, в принципе, где угодно и в разных формах, не обязательно шаблонных. А с шаблонами используется обыкновенно из-за возможности оформить аллокатор параметром шаблона.
R>есть вот стандартный класс аллокатор.. он используется в STL, а где можно посмотреть как он написан? в какой либе? у меня vs 2008..
С 2008 особенно не работаю, но загляните в include\xmemory — кажется, он (allocator) лежит там.
R>что вообще про это имеет смысл прочитать? и в чем вообще суть этих менеджеров распределения памяти? почему бы не использовать new и delete?
Суть в возможности задания своего способа выделения памяти. Это может быть, например, выделение памяти из заранее заготовленного пула. Для оптимизации скорости, оптимизации использования памяти и т.п.
Переопределённые new (не размещающий) и delete для классов, помимо выделения памяти, инициализируют объект, что может быть неприемлимо.
R>и еще вопрос .. на каком то форуме сказали что оператор new вызывает cишный оператор malloc(). это так? заранее всем спасибо за ответы.))
Во многих реализациях вызов new сводится к malloc с последующей инициализацией, если необходимо. А delete — к вызову деструктора и free. Это — детали реализации, вполне может оказаться, что другой компилятор использует HeapAlloc или сам, "вручную", управляет памятью
Здравствуйте, Alexey F, Вы писали:
AF>Здравствуйте, r1der, Вы писали:
R>>В некоторых книэках употребляется такая штука как собственный класс распределения памяти. где он вообще используется? только в шаблонах я правильно понимаю?
AF>Ну почему только в них? Можно использовать, в принципе, где угодно и в разных формах, не обязательно шаблонных. А с шаблонами используется обыкновенно из-за возможности оформить аллокатор параметром шаблона.
R>>есть вот стандартный класс аллокатор.. он используется в STL, а где можно посмотреть как он написан? в какой либе? у меня vs 2008..
AF>С 2008 особенно не работаю, но загляните в include\xmemory — кажется, он (allocator) лежит там.
R>>что вообще про это имеет смысл прочитать? и в чем вообще суть этих менеджеров распределения памяти? почему бы не использовать new и delete?
AF>Суть в возможности задания своего способа выделения памяти. Это может быть, например, выделение памяти из заранее заготовленного пула. Для оптимизации скорости, оптимизации использования памяти и т.п.
AF>Переопределённые new (не размещающий) и delete для классов, помимо выделения памяти, инициализируют объект, что может быть неприемлимо.
R>>и еще вопрос .. на каком то форуме сказали что оператор new вызывает cишный оператор malloc(). это так? заранее всем спасибо за ответы.))
AF>Во многих реализациях вызов new сводится к malloc с последующей инициализацией, если необходимо. А delete — к вызову деструктора и free. Это — детали реализации, вполне может оказаться, что другой компилятор использует HeapAlloc или сам, "вручную", управляет памятью
а что по поводу памяти?? как реализуется?? я так понимаю выделяется большой кусок памяти который потом перераспределеяется прогой? как такое делать? ведь при любом выделении памяти она инициализируется.