在C中删除内存
如何在C中删除内存 例如,我有:在C中删除内存,c,C,如何在C中删除内存 例如,我有: #include<stdlib.h> #include<stdio.h> struct list_el { int val; struct list_el * next; }; typedef struct list_el item; void main() { item * curr, * head; int i; head = NULL; for(i=1;i<=10;i++) {
#include<stdlib.h>
#include<stdio.h>
struct list_el {
int val;
struct list_el * next;
};
typedef struct list_el item;
void main() {
item * curr, * head;
int i;
head = NULL;
for(i=1;i<=10;i++) {
curr = (item *)malloc(sizeof(item));
curr->val = i;
curr->next = head;
head = curr;
}
curr = head;
while(curr) {
printf("%d\n", curr->val);
curr = curr->next ;
}
}
#包括
#包括
结构列表{
int-val;
结构列表_el*下一步;
};
类型定义结构列表项;
void main(){
项目*curr,*head;
int i;
head=NULL;
对于(i=1;ival=i;
当前->下一步=头部;
水头=电流;
}
curr=头;
while(curr){
printf(“%d\n”,curr->val);
当前=当前->下一步;
}
}
创建项目1-10后,如何删除它并确保它不存在于内存中?free()
用于释放分配给malloc()
/calloc()
的内存,如下所示:
curr = head;
while(curr) {
item *next = curr->next;
free(curr);
curr = next;
}
head = NULL;
(使用临时变量是因为curr
的内容在释放后无法访问)
顺便说一下,用C编写malloc
行的更好方法是:
curr = malloc(sizeof *curr);
(这意味着即使更改了curr
的类型,该行仍保持正确)
我会的
它基本上会在列表中穿行
curr
,边删除(使用head
存储下一个),直到元素用完。该死,9秒。我们是唯一有代码示例的人,但你赢了。@GMan,你想解释一下你的“pax欺骗”吗在你的回答中发表评论?你是一个五岁的孩子吗?在网上开玩笑,兄弟。我想我应该笑一笑。没问题,现在明白了。但新的更糟:-)新的让你像酋长一样冷静:]你已经void
edmain
。请不要那样做。它不喜欢你那样做。
while(head != NULL)
{
item* next = head->next;
free(head);
head = next;
}
while(head != NULL)
{
item* next = head->next;
free(head);
head = next;
}