I have been looking into custom allocators and I quite often see them using some kind of function to allocate memory. For testing purposes and further educate my self, I tried to make a "simple" example of doing so. However, there is one fundamental thing I am understand on how to do. One of the key differences in malloc
vs new
is that with new the constructor is called. What if I wanted to write my own allocator that was essentially replacing new
, how would I get the constructor to be called when using malloc
?
I understand that on classes I can overload new
and delete
for the class, so I suppose a big part of the question is, how is new
calling the objects constructor during allocation? Similarly, I am interested in how delete
is calling the destructor.
I created a sample test code that I was hoping to have the SomeClass
constructor called during allocation, but I don't see how.
#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;
}
(As a note, I know I can just use new
. However, for the purposes of learning I am trying to create a custom allocator that does not just call new
or placement new
).