我通过预加载库来重载“malloc”。在这个自定义的“malloc”中,我使用环境变量来区分我的程序使用我的自定义“malloc”和一般的“malloc”。
问题是,在几次“malloc”之后,程序被卡在 getenv() 调用中。我无法弄清楚为什么程序会卡在其中。
代码如下:
void* PerfTrackMallocInterposition::Malloc(size_t size) {
// Malloc with statistics
pthread_mutex_lock(&fgPTMutex);
char *checkCDBEnd=NULL;
static const char* CDBEndEnv = "checkCDBEnd";
checkCDBEnd = getenv(CDBEndEnv); //program gets stuck here
if(checkCDBEnd!=NULL)
{
if(checkCDBEnd[0]=='1')
{
if(size>1024)
{
void *result = Alloc(size); //Call to custom malloc
pthread_mutex_unlock(&fgPTMutex);
return result;
}
}
}
void* result = (*fPMalloc)(size); //call to normal malloc
pthread_mutex_unlock(&fgPTMutex);
return result;
}
将这个库与 vim 编辑器一起使用时,我也在同一位置遇到总线错误。
请帮我。
谢谢你