ビルド、単体テストの実行、メモリリークなどのmakefileがありますが、malloc()、free()、calloc()などがソースコードで使用されないようにする方法はありますか?
私は、モックのようなものを処理する交換用メモリ機能を持っています。たとえば、free()の代わりにEagleMemory_Free()を使用するように強制する方法はありますか?
私の置換関数は異なるシグネチャを持っているので、内部のマクロを自分のものにポイントするマクロを単純に作成することはできません。
void* EagleMemory_Allocate(char *id, size_t size);
void EagleMemory_Free(void *ptr);
void** EagleMemory_MultiAllocate(char *id, size_t size, int quantity);
void EagleMemory_MultiFree(void **ptr, int quantity);
void EagleMemory_MockInit(void);
void EagleMemory_Mock(char *id);
void EagleMemory_MockFinish(void);
int EagleMemory_GetMockInvocations(void);
ああ、実行時に関数を置き換えてソフトウェアをクラッシュさせたくないことも指摘する必要があります-それはばかげています。ソフトウェアが実行される前に、ビルド時または他のスクリプトを介してstd関数の使用をキャッチしたいと思います。