Вызов конструктора / деструктора объекта с помощью пользовательского распределителя
Я изучал пользовательские распределители и довольно часто вижу, что они используют какую-то функцию для выделения памяти. В целях тестирования и дальнейшего самообразования я попытался сделать & quot; простым & quot; пример этого. Тем не менее, есть одна фундаментальная вещь, которую я понимаю о том, как это сделать. Одно из ключевых отличий вmalloc
противnew
это то, что с новым вызывается конструктор. Что если бы я хотел написать свой собственный распределитель, который по сути заменялnew
Как бы я получить конструктор для вызова при использованииmalloc
?
Я понимаю, что на занятиях могу перегружатьnew
а такжеdelete
для класса, так что я полагаю, большая часть вопроса в том, какnew
Вызов конструктора объектов во время выделения? Точно так же меня интересует, какdelete
звонит деструктору.
Я создал образец тестового кода, который я надеялся получитьSomeClass
конструктор вызывается во время выделения, но я не вижу как.
<code>#include <malloc.h> void* SomeAllocationFunction(size_t size) { return malloc(size); } class SomeClass { public: SomeClass() { int con = 1000; } ~SomeClass() { int des = 80; } }; int main(void){ SomeClass* t = (SomeClass*)SomeAllocationFunction(sizeof(SomeClass)); return 0; } </code>
(Как примечание, я знаю, что могу просто использоватьnew
, Тем не менее, в целях обучения я пытаюсь создать собственный распределитель, который не просто вызываетnew
или жеplacement new
).