Я читал, что хотя динамическая память выделяется в куче во время выполнения, статическая память выделяется в стеке во время компиляции, поскольку компилятор знает, сколько памяти должно быть выделено во время компиляции.
Рассмотрим следующий код:
int n;
cin>>n;
int a[n];
Как компилятор может узнать, сколько памяти выделить для [] во время компиляции, если его фактический размер читается только во время выполнения?
Вы не сможете скомпилировать это по той причине, которую вы указали. C ++ должен иметь фиксированное число для выполнения компиляции. Если вы хотите сделать это, вы должны использовать динамическое распределение.