不使用malloc在运行时分配内存是不可能的吗?
在这种情况下,如果我们在运行时没有将内存分配给“a”,那么为什么要使用malloc呢?不使用malloc在运行时分配内存是不可能的吗?,c,C,在这种情况下,如果我们在运行时没有将内存分配给“a”,那么为什么要使用malloc呢?chara[n]在旧的C标准中是不允许的。它在C99中是允许的,但仅适用于自动变量(即,在堆栈上,如您的示例中)。例如,如果您想要一个全局变量,则需要使用malloc等来遵守该标准 编辑以提供一些证据 在C中有一个关于可变长度数组的例子。从第二篇文章中可以看出,“VLA必须是块中的自动(与静态或外部)变量。”事实上,编译器会在内部将其转换为alloca(),如果可能,它会尝试在堆栈上分配存储,如果不可能,它可以
chara[n]
在旧的C标准中是不允许的。它在C99中是允许的,但仅适用于自动变量(即,在堆栈上,如您的示例中)。例如,如果您想要一个全局变量,则需要使用malloc
等来遵守该标准
编辑以提供一些证据
在C中有一个关于可变长度数组的例子。从第二篇文章中可以看出,“VLA必须是块中的自动(与静态或外部)变量。”事实上,编译器会在内部将其转换为alloca(),如果可能,它会尝试在堆栈上分配存储,如果不可能,它可以使用常规malloc。在第二种情况下,当堆栈帧崩溃时,它将调用regular free()。我不认为这个问题是链接问题的重复。我不同意这是重复。另一个答案中没有涉及可变长度数组的一些具体问题。
main()
{
int n;
scanf("%d",&n);
char a[n];
}