让我们先看看包装函数是什么,例如:
https://en.wikipedia.org/wiki/Wrapper_function(也值得一看)
- 换行符号
使用符号的包装函数。任何未定义的符号引用都将解析为__wrap_symbol
。对__real_symbol
的任何未定义引用都将解析为符号。这可用于为系统功能提供包装器。包装函数应该被称为__wrap_symbol
。如果希望调用系统函数,则应调用__real_symbol
。这是一个简单的例子:
void *
__wrap_malloc (int c)
{
printf ("malloc called with %ld\n", c);
return __real_malloc (c);
}
如果使用--wrap malloc将其他代码与此文件链接,则对malloc的所有调用都将调用函数__wrap_malloc
。 __real_malloc
中对__wrap_malloc
的调用将调用真正的malloc函数。您可能还希望提供__real_malloc
函数,这样没有--wrap选项的链接就会成功。如果您这样做,则不应将__real_malloc
的定义放在与__wrap_malloc
相同的文件中;如果这样做,汇编器可以在链接器有机会将其包装到malloc之前解析调用。
问题陈述:
完成项目仅限于 C 语言
PS:问题与malloc()
无关。这只是一个例子。