如何在for循环中释放C中动态分配的数组

How to free dynamically allocated array in C in a for loop

所以这是我的代码:我的主要函数调用 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 时出现内存泄漏,我该如何在 for 循环中释放内存?

你遍历数组并free它。之后,您可以 free 指针数组:

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