Я пытался понять __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 стал счастливым
Я понятия не имею, что здесь происходит, так что если кто-нибудь сможет мне объяснить