如果不使用malloc,是不可能在运行时分配内存?

时间:2014-12-20 21:27:15

标签: c

main()
{
        int n;
        scanf("%d",&n);
        char a[n];
}

在这种情况下,我们不是在运行时将内存分配给'a',那么为什么要使用malloc ??

1 个答案:

答案 0 :(得分:1)

较旧的C标准中不允许使用

char a[n]。它在C99中是允许的,但仅适用于自动变量(即在堆栈中,如在您的示例中)。如果你想要一个全局变量,你需要使用malloc et。人。遵守标准。

编辑提供一些证据

C中有关于可变长度数组的helpful series of articles。从第二篇文章开始,“VLA必须是自动的(与静态或块中的变量。“