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;
每当您使用malloc
或calloc
分配内存时,请始终记住之后free
它,然后将指针设置为NULL以防止任何意外、 future 的引用,以及防止双重释放。
关于arrays - 如何动态分配数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55835772/