我一直在研究自定义分配器,我经常看到它们使用某种函数来分配内存。出于测试目的和进一步教育我自己,我试图做一个“简单”的例子。但是,我了解如何做一件基本的事情。malloc
vs的主要区别之一new
是使用 new 调用构造函数。如果我想编写自己的分配器,它本质上是替换new
,我将如何让构造函数在使用时被调用malloc
?
我知道在类上我可以重载new
和delete
类,所以我想问题的很大一部分是,new
在分配期间如何调用对象构造函数?同样,我对如何delete
调用析构函数感兴趣。
我创建了一个示例测试代码,希望SomeClass
在分配期间调用构造函数,但我不知道如何。
#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;
}
(作为说明,我知道我可以只使用new
。但是,出于学习的目的,我正在尝试创建一个不只是调用的自定义分配器new
or placement new
)。