我正在阅读有关动态内存分配和静态内存分配的内容,发现了有关动态内存分配的以下内容:
在上一章中看到的程序中,所有内存需求都是在程序执行之前通过定义所需的变量来确定的。但是在某些情况下,只能在运行时确定程序的内存需求。例如,何时需要存储空间取决于用户输入。
所以我用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] 删除。
我来说两句