Ограничение на размер динамического массива в Си++

Этот код компилируется и работает нормально:

long long n = 6'000'000'000;
auto *a = new char[n];

А если написать просто:

auto *a = new char[6'000'000'000];

то происходит ошибка компиляции:

error C2148: общий размер массива не должен превышать 0x7fffffff байт

Компилирую в VS2017 под x64.

Microsoft Visual Studio Community 2017
Версия 15.9.6
VisualStudio.15.Release/15.9.6+28307.344
Microsoft .NET Framework
Версия 4.8.03752

Установленная версия: Community

Visual C++ 2017 00369-60000-00001-AA117
Microsoft Visual C++ 2017

Чем обусловлено такое поведение? Соответствует ли оно стандарту? Есть ли вообще ограничение на максимальный размер массива, который можно выделить?


Ответы (0 шт):