我使用dlsym()来调用我的malloc版本,而不是默认库malloc:
lt_malloc = (void*(*)(size_t))dlsym(RTLD_NEXT, "malloc");
TRACE((stderr, "initialize: lt_malloc=%p\n", lt_malloc));
if (!lt_malloc) {
fprintf(stderr, "LeakTracer: could not resolve 'malloc' in 'libc.so': %s\n", dlerror());
exit(1);
}现在过了一定的时间,可能是一个计时器左右,我想恢复到原始版本的malloc (libc库malloc)。我该怎么做呢?
提前谢谢。
发布于 2011-03-31 13:21:20
上面的代码是否意味着1)你已经把你的malloc也叫做malloc了? 2)或者你把libc malloc赋给了lt_malloc?
上面的代码表明lt_malloc是libc malloc,所以是“原始”malloc。那么,您可能有一些宏或函数
因此您可以像my_malloc = libc_malloc my_malloc = my_debug_malloc一样轻松地进行切换
你只要给my_malloc打电话
如果这没有帮助,请解释发布的代码以及您在"ente codde here“中期望的内容。
发布于 2011-06-11 00:00:55
您应该在包含malloc函数的库上使用dlopen,并使用dlopen中的句柄作为dlsym的第一个参数。
或者,您可以使用use LD_PRELOAD。
https://stackoverflow.com/questions/5495578
复制相似问题