您好,我想知道为什么这在教程中有效,因此它总是列出数组必须具有固定大小,除非使用 malloc 动态创建数组。
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char **argv) {
if(argc < 2)
return 0;
int tmp[ atoi(argv[1]) ];
printf("sizeof tmp equals to %d\n", sizeof tmp);
return 0;
}
执行此操作时,ASM 级别的后台会发生什么?它是如何运作的? 它是否在堆栈上分配启动程序时给定的大小以及堆栈的最大值是多少?
这是否比使用 malloc 更昂贵?
提前致谢。
最佳答案
关于C(动态)数组(固定大小),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25950909/