Вы можете использовать его так же, как и другие (1) замена (2) malloc()
подсистем.
В первом примере malloc()
обычно заменяется на:
#define malloc(n) GC_malloc(n)
#define calloc(m,n) GC_malloc((m)*(n))
...
#define free(n) GC_free(n)
Затем вы ссылаетесь на новую библиотеку malloc () (статически или динамически).
Во втором примере LD_PRELOAD
используется для перехвата вызовов на malloc()
/ free()
.
Что я рекомендую вам сделать, так это первый вариант: создать статический / общий объект с именем bsdmalloc
и ссылаться на него по желанию.
У вас также есть возможность просто создать подпрограммы malloc BSD с вашим кодом, точно так же, как вы делали бы это с любым другим модулем (пример, включающий только stdlib, где прототип malloc):
#include <stdlib.h>
#define malloc(n) BSD_malloc(n)
void *BSD_malloc(int n)
{
return NULL;
}
int main(void)
{
char *ret;
ret = (char *) malloc(1024);
return ret == NULL ? 1 : 0;
}
Для более системного подхода, я действительно рекомендую пойти по пути общего объекта.