【发布时间】:2011-10-08 11:49:09
【问题描述】:
大家好,我想问一下,我已经读到我们只能通过使用指针和使用 malloc 或 newlike 来声明动态数组
int * array = new int[strlen(argv[2])];
但我写过
int array[strlen(argv[2])];
它没有给我任何错误
我已经读到静态数组只能通过给定数组大小来声明,但这里我给静态数组一个可变大小
为什么这么感谢
使用是否安全,或者在任何后期阶段它都会给我使用 gcc linux 带来问题
【问题讨论】:
-
我有错误。你在用什么编译器?
-
先生,我正在使用 gcc linux,它的工作原理非常好:/
-
你只能在创建数组时使用 const。像 const int size = strlen(argv[2]);整数数组[大小];
-
除了这个问题,有时我想知道,C99 是如何处理 VLA 的?它如何为编译时甚至不知道的长度分配连续内存。
-
@iammilind 与分配任何堆栈变量的方式相同:通过从
ESP中减去。