malloc()并free()在标准库中定义;链接代码时,链接器将仅在库中搜索尚未被较早遇到的目标代码解析的符号,并且编译生成的目标文件始终在任何库之前链接。
因此,您只需在自己的代码中定义库函数即可覆盖任何库函数,确保它具有正确的签名(相同的名称、相同的参数数量和类型以及相同的返回类型)。
是的你可以。这是一个示例程序。它使用 gcc 4.8.2 编译和构建,但没有做任何有用的事情,因为实现不起作用。
#include <stdlib.h>
int main()
{
int* ip = malloc(sizeof(int));
double* dp = malloc(sizeof(double));
free(ip);
free(dp);
}
void* malloc(size_t s)
{
return NULL;
}
void free(void* p)
{
}
Run Code Online (Sandbox Code Playgroud)