这为什么有效?
我对C++中动态内存分配的理解告诉我,需要使用它的一种情况是在编译时不知道需要分配多少内存。在这个程序中,很明显数组大小在编译程序时是未知的,但是是动态的,因为它可以根据用户输入的值而改变。
下面是一个成功编译(无警告和错误)并运行的程序:
g++ program.cpp -std=c++11 -o program.exe
为什么这不算作动态内存分配并且能够编译?
#include <iostream>
int main()
{
std::cout << "Enter a number: ";
int arraySize;
std::cin >> arraySize;
int array[arraySize];
for(int element : array)
{
element = 42;
std::cout << element << "\n";
}
std::cout << "Array size: " << sizeof(array) << "\n";
std::cout << "Element count: " << sizeof(array)/sizeof(int);
return 0;
}
我对C++中动态内存分配的理解告诉我,需要使用它的一种情况是在编译时不知道需要分配多少内存。在这个程序中,很明显数组大小在编译程序时是未知的,但是是动态的,因为它可以根据用户输入的值而改变。
下面是一个成功编译(无警告和错误)并运行的程序:
g++ program.cpp -std=c++11 -o program.exe
输入一个数字:12
42
42
42
42
42
42
42
42
42
42
42
42
数组大小:48
元素数量:12
为什么这不算作动态内存分配并且能够编译?