Glibc
文章平均质量分 77
460833359
这个作者很懒,什么都没留下…
展开
-
__builtin_expect函数解析
1.引言在很多源码如Linux内核、Glib等,我们都能看到likely()和unlikely()这两个宏,通常定义如下:#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0)可以看出这2个宏都是使用函数 __builtin_expect()实现的, __builtin_expect()函数是GCC的一个内建函数(build-in function).官...转载 2022-05-27 18:28:36 · 712 阅读 · 0 评论 -
malloc钩子和内存泄漏工具mtrace、Valgrind
一:malloc钩子函数static void* (* old_malloc_hook) (size_t,const void *);static void (* old_free_hook)(void *,const void *);static void my_init_hook(void);static void* my_malloc_hook(size_t,const void*);static void my_free_hook(void*,const void *);static转载 2021-12-21 10:57:20 · 395 阅读 · 0 评论 -
malloc hook初探
在程序中设置钩子,用来在malloc, realloc,free的时候,对其进行检查,可以看到对应的函数调用后的地址是什么。这个有时候可以用在debug的时候使用。几个变量__malloc_hook 这是一个函数指针变量,指向的是: void * function(size_t size, void * caller) 其中caller是表示在栈中调用malloc的函数的时候的函数地址,%p可以打印出他的地址。 __free_hook 同样这个也是一个函数指针变量,指向的是:转载 2021-12-21 10:50:57 · 972 阅读 · 0 评论 -
glibc 内存分配总结
1、下载和编译源码下载:https://www.gnu.org/software/libc/下载后解压:tar zxvf glibc-2.23.tar.gz(原来这里下载了glibc-2.2.3.tar.gz,一个符号点之差,导致编译了半天不成功,各种错误)$ tar zxvf glibc-2.23.tar.gz$ mkdirglibc-build bin设置环境变量bashrccat bashrcexport PATH=$PATH:/home/xxxx/mini_...转载 2021-12-14 17:41:47 · 841 阅读 · 0 评论