Контекст: я работаю над проектом, в котором клиенту необходимо использовать пользовательское динамическое выделение памяти вместо выделения объектов из стека. Обратите внимание, что рассматриваемые объекты имеют размер, известный во время компиляции, и даже не требуют динамического выделения. Что заставляет меня задуматься,
В каких контекстах пользовательское динамическое выделение памяти для объектов может быть лучше, чем выделение объектов из стека? (где размер известен во время компиляции)
Пример. Если Dog
является классом, то вместо того, чтобы просто объявить Dog puppy;
, они хотят, чтобы мы сделали
Dog* puppy = nullptr;
custom_alloc(puppy);
new(puppy) Dog(); // the constructor
// do stuff
puppy->~Dog(); // the destructor
custom_free(puppy)
Реальная функция custom_alloc
нам неизвестна. Чтобы запустить программу, данная функция custom_alloc
должна быть оболочкой malloc
. И custom_free
будет оболочкой free
Мне не нравится этот подход, и мне было интересно, когда это может быть действительно полезным или что они действительно пытаются решить, делая это.