所有.
我想链接一个调用malloc()函数的库.但是,我的目标环境是不同的,并
malloc()作为内联函数提供.
如何将库的调用malloc()指向我的目标环境的malloc()例程?
是否可以更改导出的函数名称?如果是这样,我可以my_malloc()先编码并将其导出为malloc()并将库链接到该库:
#include <my_environment.h> // malloc() is inline function declared there
void my_malloc (void) {
malloc (void);
}
Run Code Online (Sandbox Code Playgroud)
更具体地说,该库是来自linux发行版的库,因此它依赖于libc.但我的环境嵌入了一个,没有libc库和malloc(),free()......是定制的实现.一些是内联函数,一些是库函数.
例如,如果我想覆盖malloc(),那么最好的方法是什么?
目前我所知道的最简单的方法是:
malloc.h所
#include <stdlib.h>
#define malloc my_malloc
void* my_malloc (size_t size);
Run Code Online (Sandbox Code Playgroud)
foobar.c但是
#include "malloc.h"
void foobar(void)
{
void* leak = malloc(1024);
}
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是我们现在必须使用"malloc.h"并且永远不能使用"stdlib.h".有没有解决的办法?我特别感兴趣的是导入第三方库而不修改它们,但是强迫它们调用我的自定义libc函数(比如malloc).
我正在编写一个名为nauty的程序.该程序使用规范函数名称getline,它也是标准GNU C库的一部分.
是否有可能在编译时告诉GCC使用这个程序定义的函数?
假设我有以下几行代码:
int a = rand();
int b = rand();
int c = rand();
Run Code Online (Sandbox Code Playgroud)
在调试时,有什么方法可以使 'rand()' 分别返回 1、2、3 到变量 a、b 和 c?
如果不是(我认为可能是这种情况),是否有一种简单的 Ctrl-F 替换方法,我可以在调试时对这些值进行硬编码?