Как освободить динамически размещенный массив в C в цикле for - PullRequest
0 голосов
/ 07 февраля 2020

Вот код, который у меня есть: моя основная функция вызывает функцию readtitles

int main() {
   char **bookTitles;
   bookTitles= malloc(bookCount * sizeof(char*));
   readtitles(bookTitles,  bookCount);

   free(bookTitles);
   return 0;
}

, а это моя функция readtitles:

void readtitles(char **bookTitles, int bookCount) {

    int i;

    printf("Enter the book titles: ");

    for(i = 0; i < bookCount; ++i) {
        *(bookTitles+i) = malloc(61*sizeof(char));
        scanf(" %[^\n]",*(bookTitles+i));
    }
}

, когда я использую valgrind, я получаю память Утечки, как я go об освобождении памяти в для L oop?

1 Ответ

3 голосов
/ 07 февраля 2020

Вы l oop над массивом и free это. После этого вы можете free массив указателей:

int i;
for( i = 0; i < bookCount; i++ )
    free(bookTitles[i]);
free(bookTitles);
...