使用const int的动态数组

时间:2013-08-05 15:49:27

标签: c arrays dynamic

这也是声明动态数组的有效代码。

malloc需要指针,但事实并非如此。这是一种更好的方法吗?

 printf("enter the size of array")
 scanf("%d",&x)
 const int size
 size = x
 int array[size]

1 个答案:

答案 0 :(得分:1)

很难说一个人是否比另一个更好,一个更好的问题是每个人的优势是什么,你需要根据你的要求决定但是使用malloc并使用可变长度数组({ {1}})不一样。

存在一些主要差异。VLA VLA通常会在堆栈上分配,尽管这是一个实现决策,标准只是说有1)。堆栈比堆automatic'ed数组所在的堆更受限制,因此您可以轻松地溢出堆栈。 malloc您需要释放2)'ed数组,VLA是一个自动变量,并且不会在声明范围之外存在。malloc VLA是{{3}的一部分所以使用3)的代码不会是C99 standard