如果我只能创建一个数组,为什么需要动态内存分配?

瓦西·马林(Vasi Marin)

我正在阅读有关动态内存分配和静态内存分配的内容,发现了有关动态内存分配的以下内容:

在上一章中看到的程序中,所有内存需求都是在程序执行之前通过定义所需的变量来确定的。但是在某些情况下,只能在运行时确定程序的内存需求。例如,何时需要存储空间取决于用户输入。

所以我用C ++编写了以下程序:

#include <iostream>

int main()
{
  int n = 0;
  int i = 0;

  std::cout << "Enter size: ";
  std::cin >> n;
  int vector[n];

  for (i=0; i<n; i++)
  {
    vector[i] = i;
  }

  return 0;
}

该程序有效。我不明白它是如何工作的。何时确定尺寸?在这种情况下,如何分配向量?

火焰

根据(重点煤矿):

ISO C99允许使用可变长度自动数组,作为扩展,GCC在C90模式和C ++中接受它们。这些数组的声明与其他任何自动数组一样,但是长度不是常量表达式。在声明时分配存储,并在包含声明的块作用域退出时释放存储

请注意,这只是扩展,无法在所有编译器上使用,例如,它不适用于MSVC(我收到错误“表达式必须具有恒定值”)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我可以从静态实现动态分配时,为什么需要使用动态内存分配?

如果 malloc() 只分配一块只能存储一个变量的内存,如何使用它来创建动态数组?

为什么我的单选输入只能在整个数组映射的数组列表中选择一个选项?

为什么在 C 中需要使用 malloc 进行动态内存分配?

如果我们只能分配一个公共IP地址,为什么还要有NAT?

为什么我只能插入一个数字而不是一个名字?

为什么我必须分配一个新数组,以便删除每个动态对象(组件)?

为什么动态内存分配的规模不是线性的?

为什么我的类模板的动态分配数组属性只能存储一项?

我可以创建一个只能动态分配的结构吗?

jQuery:为什么我只能获得第一个数据属性?

C++ 中给定的两行动态内存分配有什么区别?他们都创建了 10 个大小的数组吗?

(NASM,C)为什么您需要两次malloc创建一个数组,如下所示

结构中数组的动态内存分配

结构数组的动态内存分配

指针数组的动态内存分配

如果我只能定义一个变量,为什么要使用It.is <>或It.IsAny <>?

我曾在一个班级,但阵列显示空另一类分配的值到一个数组,为什么呢?(代码的分数被提供)

当我的代码仅请求一个内存分配时,为什么valgrind报告两个内存分配?

当我错过C中的动态内存分配时,为什么没有编译错误?

结构数组的动态内存分配与静态内存分配

为什么我只能在while循环之外获取数组的最后一个元素

为什么我只能引用传递给onClickListener的TextView数组中的最后一个元素

我正在尝试根据ES类参数创建一个数组,但是却得到一个空数组,为什么?

为什么我需要一个位运算符来访问最后一个数组元素?

mysqli:为什么我需要一个“ if”语句来创建一个表?

为什么我需要声明一个私有类静态以避免“通用数组创建”错误?

需要有关C ++中二维数组的动态内存分配的帮助

为什么需要将*放在(&a)之前减去(a是一个数组)?