[英]How to deallocate array of pointers to structures in C?
我需要动态分配结构数组并对其执行一些操作,然后释放内存。 当我尝试像那样释放内存时
for (int i = 0; i < booksAmount; i++) {
free(myArray[i])
}
这是代码的链接
https://repl.it/@Xyrolle/Structures
我需要使 printList 函数在释放后不会打印书籍数组。
另外,您对如何更有效地管理内存有什么建议吗?
谢谢你。
代码如下所示:
struct Book *booksList = NULL;
allocList(&booksList, booksAmount);
void allocList(struct Book **myArray, int booksAmount) {
*myArray = malloc(sizeof(struct Book) * booksAmount);
printf("memory for %d books was allocated \n", booksAmount);
}
现在释放分配的内存。 您为书籍数组分配了一次内存,因此您只需要一个free
:
free(booksList);
另外,请注意我从malloc
删除了演员表。 This post
有很好的观点,说明为什么不应该投射它。
您分配内存的方法不正确。 当您为每本书使用结构时。 您应该为每条记录单独分配内存。 因为您可能无法一次存储所有书籍记录。 例如:您有最大数量。 书籍数量为 100,但现在您有 10 本书的信息。 随着你的接近,90本书的记忆将被浪费。
void allocList(struct Book **myArray, int booksAmount) {
int i;
for(i = 0;i < booksAmount; i ++) {
*myArray = (struct Book*) malloc(sizeof(struct Book));
}
}
戴尔内存:
for (i = 0; i < booksAmount; i ++) {
free(myArray[i]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.