次のコードがあります。
void fn(char *string , int flag)
{
static char* array_of_strings[100];
static int index = 0;
if(flag)
{
array_of_strings[index] = (char *)malloc(10);
strcpy(array_of_strings[index] , string);
index++;
}
else
{
//How should I deallocate the memory here?
index--;
}
}
else ブロックが満たされた場合、array_of_strings[index] はどうなりますか? 自動的に割り当て解除されますか、それとも fn() が戻った後も残りますか? コメントの代わりにこの行を使用する必要があります:
array_of_strings[index] = 0;
または、次のように free() を使用できますか:
free(array_of_strings[index]);
これにより、malloc によって割り当てられたメモリ ブロックが解放されますか?