相关疑难解决方法(0)

使用可变长度数组有任何开销吗?

使用可变长度数组有一些开销吗?可以在运行时通过命令行参数传递数组的大小吗?与自动和动态分配数组相比,为什么会引入它?

c arrays variable-length-array

46
推荐指数
2
解决办法
2万
查看次数

为什么C/C++编译器在编译时需要知道数组的大小?

我知道C99之前的C标准(以及C++)说堆栈上的数组大小必须在编译时知道.但那是为什么呢?堆栈上的数组在运行时分配.那么为什么大小在编译时很重要?希望有人向我解释编译器在编译时将如何处理大小.谢谢.

这种数组的例子是:

void func()
{
    /*Here "array" is a local variable on stack, its space is allocated
     *at run-time. Why does the compiler need know its size at compile-time?
     */
   int array[10]; 
}
Run Code Online (Sandbox Code Playgroud)

c c++

37
推荐指数
3
解决办法
8971
查看次数

GCC如何实现可变长度数组?

GCC如何实现可变长度数组(VLA)?这些数组是否基本上指向动态分配的存储,例如alloca返回的存储?

我能想到的另一个选择是,这样的数组被分配为函数中的最后一个变量,因此在编译时可以知道变量的偏移量.但是,在编译期间,第二个VLA的偏移量将再次不知道.

c arrays gcc

20
推荐指数
2
解决办法
5920
查看次数

为什么动态内存允许在运行时操作数组?

这只是“这就是语言的工作方式”问题之一吗?编辑:

为什么动态内存允许在运行时分配数组的大小?

为什么我不能只使用从堆栈调用的变量,而不是从堆调用的变量?它们都是变量,其中一个只是从不同的地方调用,并且必须手动释放和创建。在堆栈中创建的变量可以在运行时更改,对吗?

c c++ memory dynamic

2
推荐指数
1
解决办法
463
查看次数

标签 统计

c ×4

arrays ×2

c++ ×2

dynamic ×1

gcc ×1

memory ×1

variable-length-array ×1