【发布时间】:2015-02-19 11:28:22
【问题描述】:
main()
{
int n;
scanf("%d",&n);
char a[n];
}
在这种情况下,我们不是在运行时将内存分配给“a”,那么为什么要使用 malloc??
【问题讨论】:
-
事实上你是,内部编译器将其转换为 alloca(),如果可能,它会尝试在堆栈上分配存储空间,如果没有,它可以使用常规 malloc。在第二种情况下,它会在堆栈框架崩溃时调用常规 free()。
-
我不认为这个问题是链接问题的欺骗。
-
不同意这是一个骗局。可变长度数组存在其他答案中未涵盖的特定问题。
标签: c