文字の配列用にメモリ空間を解放しようとしています:
static void cleanArray(char* array)
{
int i;
int size = strlen(array) + 1;
for(i = 0; i < size; i++)
free(array[i]);
free(array);
}
int main(){
char* array = (char *)malloc(1 * sizeof(char*));
int c;
for(c=0;c<100;c++){ //code to populate some string values in the array.
void *p = realloc(array, (strlen(array)+strlen(message)+1)*sizeof(char*));
array = p;
strcat(array, "some string");
}
cleanArray(array); //I get error only when I call this method.
}
しかし、上記のコードではSegmentation fault
エラーが発生します。
そして、 cleanArray() の代わりに次のコードを試してみると、配列が解放されたとは思いません:
free(array);
printf("%s",array); //it prints all the values in the array. Hence, I concluded it is not freedup.