c - 与使用 malloc 在堆上分配内存相比,使用 int 数组有哪些优点?

标签 c

我不知道这个问题是否有意义,但我对 C 和堆等概念还很陌生,所以现在对我来说有点不知所措。我一直在阅读一些关于使用 malloc() 进行内存分配的文章与声明变量当我想在使用 malloc() 时使用变量时,我需要提前知道需要的数据量我不知道。

我可以使用 malloc 在运行时根据需要分配数据,但是如何分配呢?假设我想输入连续 100 天的温度记录,所以我做了一些事情 喜欢

int* temps=malloc(100*sizeof(int)). 

现在,当我输入数据时,我意识到我需要输入 110 天的记录。如何在运行时添加附加数据?因为我刚刚为 100 个整数分配了空间。如果我这样做 int temps[100] 会有什么不同? ,我知道我必须再次初始化数组,更改 int temps[100]至 int temps[110]然后再次重新编译程序并重新开始输入。

最佳答案

Now while I was inputting data I realise that I needed to enter 110 days of records. How do I go about adding the additional data at runtime?

使用realloc .

What difference would it have made if had I done int temps[100]

您无法再更改此大小,它是固定的。您已经分配了 100 个整数的数组,就完成了。虽然使用上述方法,您仍然可以在运行时“调整”数组的大小。

尽管请注意,根据您的情况,有时执行诸如 int x[100] 之类的操作可能没问题,而且它可以帮助您避免与内存管理相关的问题。也就是说,仅在必要时才使用动态内存,例如 malloc(正是为了避免与内存管理相关的复杂性)。

关于c - 与使用 malloc 在堆上分配内存相比,使用 int 数组有哪些优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35985000/

相关文章:

c - 监控低级 Hook [C]

c++ - 错误(文件)== 32

javascript - 来自 Javascript 的 C 中的 Emscripten OOB 异常

c - K&R 练习 1-19 意外且不一致的输出

php - 从 C 程序调用 PHP

c - 指针和整数之间的警告比较

c - #define 还是枚举?

c - c 中间接运算符的右值

c++ - 创建从父进程标准输入到子进程标准输入的管道

c - 使用带光电体积描记图传感器的 Arduino 确定心跳