Я пишу программу и вдруг сомневался. Есть два способа назначить статический массив.
int main ()
{
int a[10];
}
int main()
{
int N;
cin >> N; //assume i input N as 10
int a[N];
}
Как распределение памяти в обоих случаях отличается? Будет ли назначено во время выполнения во втором случае?
Второй способ запрещен. Первый способ будет создавать память в стеке. Как только main() выйдет, он будет отменен. Если вы хотите, чтобы динамическое распределение наилучшим образом было использовать новый:
int* = new int[N];
Но тогда вам придется удалить его, в конце концов. Если вы в порядке с использованием STL, просто перейдите к std :: vector:
std::vector<int> a;
Второй компилируется. Но это неправильно. Стандарт C/C++ не позволяет этого.