Память C++, выделенная во время компиляции

Я читал, что хотя динамическая память выделяется в куче во время выполнения, статическая память выделяется в стеке во время компиляции, поскольку компилятор знает, сколько памяти должно быть выделено во время компиляции.

Рассмотрим следующий код:

int n;
cin>>n;
int a[n];

Как компилятор может узнать, сколько памяти выделить для [] во время компиляции, если его фактический размер читается только во время выполнения?

1 ответ

Вы не сможете скомпилировать это по той причине, которую вы указали. C++ должен иметь фиксированное число для выполнения компиляции. Если вы хотите сделать это, вы должны использовать динамическое распределение.

Другие вопросы по тегам