arrays - 如何动态分配数组的大小?

标签 arrays dynamic size

include <stdio.h>

int main() {
   int num = 10;
   int arr[num];
   for(int i = 0; i < num; i++){
     arr[num] = i+1;
   }
}

我的一些同事说这个代码不正确并且是非法的。但是,当我运行它时,它运行正常,没有任何错误。他不知道如何解释它为什么有效以及为什么我不应该这样编码。你能帮我么。我是初学者,我想学习C。

最佳答案

如果要动态分配长度为 n int 的数组,则需要使用 malloc 或 calloc。 Calloc 是数组分配的首选,因为它具有内置的乘法溢出检查。

int num = 10;
int *arr = calloc(num, sizeof(*arr));
//Do whatever you need to do with arr
free(arr);
arr = NULL;

每当您使用malloccalloc分配内存时,请始终记住之后free它,然后将指针设置为NULL以防止任何意外、 future 的引用,以及防止双重释放。

关于arrays - 如何动态分配数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55835772/

相关文章:

objective-c - 如何分配动态类型对象

size - 以太坊:如何部署稍大的智能合约?

c - 通过 fgets 从 txt 文件检索的文本的某些部分在 c 中丢失了

javascript - Swig 模板 : How to check if value exists in array?

javascript - 这是将一个数组拆分为 2 个数组的最有效方法吗?

php - 将包含字符串和数字的多维数组插入 MySQL

javascript - addEventListener 'click' 只工作一次

javascript - this.each 没有正确遍历集合

安卓动态onClick

android - 如何区分两个不同的android mdpi手机