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

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

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

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

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

1

Решение

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

4

Другие решения


По вопросам рекламы [email protected]