我有一个生成文件,可以构建、运行单元测试、内存泄漏等。但是有没有办法可以阻止 malloc()、free()、calloc() 等在源代码中使用?
我有替换内存函数来处理诸如模拟之类的事情。例如,有没有办法可以强制使用 EagleMemory_Free() 而不是 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 函数的使用。