代码看起来像:
char *global1 = NULL;
char *global2 = NULL;
char *global3 = NULL;
char *global4 = NULL;
void func2(char *gPtr, char **gPtrToInitialize)
{
if(*gPtrToInitialize == NULL) // Here, gPtr is correct
{
*gPtrToInitialize = dlcalloc(MAX_PATH, 1);
} // Here, gPtr has trailing junk characters
// Do some initialization
}
void func1()
{
if(global1 == NULL)
{
global1 = dlcalloc(MAX_PATH, 1);
}
func2(global1, &global2);
func2(global1, &global3);
func2(global1, &global4);
// Do other tasks
// Free all allocated global variables
}
注意:
上述代码中,dlcalloc
指的是Doug Lea 的malloc.c中定义的代码。
在calloc
里面之前func2()
,
gPtr
= "C:\Program Files\Test\Path.txt"
calloc
进去之后func2()
,
gPtr
= "C:\Program Files\Test\Path.txt♂"
我的问题是,连续dlcalloc()
调用是否有可能破坏其他变量的内存?上面的代码是我正在研究的大型代码库的一部分的概括。