私はカスタム アロケータを調査してきましたが、何らかの関数を使用してメモリを割り当てることがよくあります。テストの目的と自分自身をさらに教育するために、そのための「簡単な」例を作成しようとしました。ただし、その方法について私が理解している基本的なことが 1 つあります。malloc
vsの主な違いの 1 つは、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;
}
(メモとして、私は単に使用できることを知っています。ただし、学習の目的で、 ornew
を呼び出すだけではないカスタム アロケーターを作成しようとしています)。new
placement new