如何在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);
所以这是我的代码:我的主要函数调用 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);