私は、C と C++ の両方のメモリ マネージャーの作成に取り組んでいます。C は関数のオーバーロードをサポートしていないため、malloc の再定義を補うために、次のようなスタイルを使用しました。
void * my_malloc(size_t size) {
void * p = malloc(size);
// Do additional stuff
...
}
#define my_malloc(x) malloc(x)
malloc
これにより、 myを で呼び出すことができますmalloc(sizeof(type))
。これは機能します。ただし、オペレーターが呼び出されたとき、できれば代入操作が行われた後もやりたいと思います。GCC が をサポートしていることは知っています__attribute__((destructor))
。
だから私の質問は、演算子が呼び出される前/後に関数を実行する方法はありますか (できればパラメーターも渡されます)、またはマクロを使用して演算子を再定義できますか?