c - 如何释放在数组中隐式分配的内存?
问题描述
对于 C 中的动态内存分配,您必须先释放(或释放)保留的内存,然后才能执行和编译程序。例如:
....
... = malloc(...)
...
free(...)
return 0;
但是如果我不使用动态内存分配它是如何工作的。例如,如果我使用 保留 40000000 字节的空间int array [10000000]
,我以后不需要时如何在程序中释放内存?
解决方案
在 C 中分配内存有不同的方法。
- 自动存储持续时间(又名局部变量)- 在进入块时自动分配(函数、
if
语句、循环或其他),并在退出块时释放。 - 静态存储持续时间(又名全局变量和
static
局部变量) - 在程序开始时自动分配,并在结束时自动释放。 - 动态存储持续时间(又名堆) - 分配
malloc
和释放free
.
顺便说一句,您不必在退出程序之前释放所有内容。操作系统将在退出时释放属于您的程序的所有内存。(否则您必须更频繁地重新启动计算机)
推荐阅读
- r - 使用 map2 将 st_intersection 应用于嵌套数据框
- polymer - 将更改从一个 LitElement 传播到子 LitElement 的正确方法是什么?
- sql-server - 创建具有更改表名的视图
- css - 在 Jupyter 笔记本中更改正文的大小
- javascript - VueJS:无法读取未定义的属性“调度”
- oracle - 如何获取列数
- c++ - `std::set_intersection` 的 lambda 比较器
- javascript - JQuery.post 无法执行“postMessage”
- sql - SQL - 将一列中的值拆分为两个单独的列
- python - 未找到没有参数的“add_items”反向。尝试了 1 种模式:['add_items\\/(?P
[^/]+)\\/$']