Информация об изменениях

Сообщение Re: Использование аллокатора от 11.10.2019 20:11

Изменено 11.10.2019 20:13 K13

Re: Использование аллокатора
Здравствуйте, koenjihyakkei, Вы писали:

K>В некоторых серьезных проектах видел как в классе переопределяют оператор new, для того чтобы выделять память через свой аллокатор.


K>Так вот вопрос, может я чего-то упустил, но я не могу найти плюсов у первого варианта по сравнению со вторым.


А где во втором варианте нестандартное выделение памяти?
В общем случае в первом варианте вместо malloc может быть что угодно -- например, при написании плагина к какой-нибудь системе "большие" куски памяти надо просить через подсистему хоста. Иначе в 32-битном режиме вылетим по Out Of Memory.

Во втором случае память выделяется стандартным new.
Или надо было уж расписывать malloc + placement new и возврат указателя, чтобы функционал двух вариантов совпадал, отличаясь синтаксисом.
Re: Использование аллокатора
Здравствуйте, koenjihyakkei, Вы писали:

K>В некоторых серьезных проектах видел как в классе переопределяют оператор new, для того чтобы выделять память через свой аллокатор.


K>Так вот вопрос, может я чего-то упустил, но я не могу найти плюсов у первого варианта по сравнению со вторым.


А где во втором варианте нестандартное выделение памяти?
В общем случае в первом варианте вместо malloc может быть что угодно -- например, при написании плагина к какой-нибудь системе "большие" куски памяти надо просить через подсистему хоста. Иначе в 32-битном режиме вылетим по Out Of Memory.

Во втором случае память выделяется стандартным new.
Или надо было уж расписывать malloc + placement new и возврат указателя, чтобы функционал двух вариантов совпадал, отличаясь синтаксисом.

Еще одно соображение: первый вариант позволяет одному экземпляру аллокатора работать с разными типами (разных размеров).
Во втором варианте экземпляр аллокатора будет на каждый класс, даже если у разных классов размеры совпадают.