【发布时间】:2016-05-04 01:09:33
【问题描述】:
我想知道在执行期间是否可以在 C 中定义数组的大小。 例如,我可以这样做吗?
int n,i;
scanf("%d",&n);
int v[n];
for(i=0;i<n;i++){
v[i] = i;
}
如果可以的话,我应该什么时候使用函数 malloc 来动态分配内存?我的意思是,如果我可以读取一个值 n 并分配一个具有 n 个位置的数组,那么在执行过程中,我为什么要使用 malloc?
【问题讨论】:
-
如果函数返回后存储必须保持不变,则使用
malloc。如果您希望以任意顺序释放存储空间,也需要它。 -
你能提供更多细节吗?我不明白。
-
一个函数分配内存并返回一个指向它的指针。为此,您必须使用
malloc。例如,将元素添加到链表然后返回的函数。 -
如果你的编译器支持VLAs,你可以这样做。
标签: c arrays memory memory-management