如何删除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++) {
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 ;
}
}
Run Code Online (Sandbox Code Playgroud)
在我创建项目1 - 10后,如何删除它并确保它不存在于内存中?
free()用于释放用malloc()/ 分配的内存calloc(),如下所示:
curr = head;
while(curr) {
item *next = curr->next;
free(curr);
curr = next;
}
head = NULL;
Run Code Online (Sandbox Code Playgroud)
(使用临时变量是因为curr释放后无法访问其内容).
顺便说一句,malloc在C中编写行的更好方法是:
curr = malloc(sizeof *curr);
Run Code Online (Sandbox Code Playgroud)
(这意味着即使curr更改了类型,线仍然正确).
| 归档时间: |
|
| 查看次数: |
9831 次 |
| 最近记录: |