__malloc_hook怪异的行为

时间:2018-10-02 04:28:48

标签: c linux malloc

我尝试通过尝试实际的代码来了解__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变得满意之后发生的

我不知道这里发生了什么,所以如果有人可以向我解释

0 个答案:

没有答案