问题描述
我正在开发一个库,我想知道一些有关我提供的功能之一的调用者的数据。特别是,我需要知道文件名,函数名和调用函数(重新定义的malloc)的行。
编辑:这是一个最小的工作示例,在此示例中,我可以检测到用户何时调用malloc并将其“重定向”到我自己的malloc函数:
main.c:
#include <stdio.h>
#include <stdlib.h>
#include "myLib.h"
int main(){
printf("Inside main,asking for memory\n");
int *p = malloc(sizeof(int));
*p = 3;
free(p);
return 0;
}
myLib.c:
#include "myLib.h"
void * myAlloc (size_t size){
void * p = NULL;
fprintf(stderr,"Inside my own malloc\n");
p = (malloc)(size);
return p;
}
#undef malloc
#define malloc(size) myAlloc(size)
myLib.h:
#ifndef MYLIB_H
#define MYLIB_H
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define malloc(size) myAlloc(size)
void * myAlloc(size_t size);
#endif
我尝试使用_ FILE _ _ _ func _和_ LINE _关键字,但是由于该原因,我无法使其正常工作在另一个模块中。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)