__malloc_hook странное поведение - PullRequest
0 голосов
/ 02 октября 2018

Я пытался понять __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 стал счастливым

Я понятия не имею, что здесь происходит, так что если кто-нибудь сможет мне объяснить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...