所以我正在研究内存分配,它说你只能使用 malloc(); 动态分配内存;但这不是动态内存分配吗?顺便说一句,它有效。所以我有点困惑。
#include<stdio.h>
#include<conio.h>
int main()
{
int integer,cntr;
scanf("%d",&integer);
char words[integer];
for(cntr = 0;cntr < integer - 1;cntr++)
words[cntr] = 'k';
words[cntr] = '\0';
printf("%s",words);
getch();
return(0);
}
最佳答案
那是 variable-length array 。大小确实是动态的,但实际上它通常会在堆栈上而不是堆上分配(所以不要将它用于太大的东西)。
根据您的编译器等,这可能最终比分配堆内存快得多,只不过是对堆栈指针的调整。
C99 标准中引入了可变长度数组,因此请记住,您将无法在非常旧的 C 编译器(例如 MSVC)中使用它们。
关于c - 这个数组是静态的还是动态的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12303944/