Я использую двумерный массив, и мне необходимо выделить его, как показано:
char ** buf; //global var
void allocate()
{
buf = (char **) malloc (10 * sizeof (char*));
char * data = (char *) calloc (1, 1000);
int i;
for(i=0; i<10; i++)
buf[i] = &(data[i*100]);
}
int main()
{
allocate();
//something goes here
free(buf[0]);
free(buf);
return 0;
}
Теперь, чтобы освободить массивы, поскольку я не могу получить доступ к переменной ' data ' в main () , я не могу сделать free (data) , следовательно Я делаю free (buf [0]) , предполагая, что я освобождаю весь массив из 1000 элементов. Это правильный способ сделать это? Освобождает ли (buf [0]) весь массив данных?
(Было бы удобно распределять каждый элемент buf как buf [i] = malloc (100), но я не могу этого сделать, так как у меня есть сначала для вызова большого блока).
Заранее спасибо.