我尝试通过尝试实际的代码来了解__malloc_hook
我已经尝试了很多,但仍然没有做好。
让我们从第一个开始吧
#include <stdio.h>
#include <malloc.h>
void *my_hook(size_t size, const void *caller){
puts("myHook i called ");
fflush(stdout);
return NULL;
}
int main(){
printf("hi so\n");
__malloc_hook= my_hook;
printf("%700000s\n","asdf");
return 0;
}
在这里,我试图强制printf使用我的malloc
定义(my_hook
)
它可以工作,但是当我将%700000s
更改为%s
时,它不起作用
而且它从不叫我(my_hook
)
我做了另一个让gcc开心的实验,所以他不再发出很多警告
#include <stdio.h>
#include <malloc.h>
void *my_hook(size_t size, const void *caller){
puts("myHook i called ");
fflush(stdout);
return NULL;
}
int main(){
printf("hi so\n");
void *(*__malloc_hook)(size_t , const void *)= my_hook;
printf("%700s\n","asdf");
return 0;
}
但是问题是my_hook
从未被printf
使用,这是在gcc变得满意之后发生的
我不知道这里发生了什么,所以如果有人可以向我解释