我不知道这个问题是否有意义,但我对 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/