コードは次のようになります。
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
}
注:
上記のコードでは、DougLeaのmalloc.cdlcalloc
で定義されているコードを指します。
calloc
中の前にfunc2()
、
gPtr
= "C:\ Program Files \ Test \ Path.txt"
calloc
中に入った後func2()
、
gPtr
= "C:\ Program Files \Test\Path.txt♂"
私の質問は、連続したdlcalloc()
呼び出しは他の変数のメモリを破壊する可能性がわずかにあるかということです。上記のコードは、私が取り組んでいるものの大きなコードベースの一部を一般化したものです。