Ограничение на размер типа массива, пока еще нет экземпляра - PullRequest
0 голосов
/ 09 июня 2019

У меня есть следующая минимальная тестовая программа:

struct Test { 
    double contents [1000000000];
};

int main () {
    return 0;
}

Он отказывается от компиляции, даже если компилятор не может знать, буду ли я создавать экземпляр Test статически, в стеке или в куче.Почему компилятор жалуется?Ограничены ли объекты в куче 2 ГБ?

Отчет об ошибке компиляции: test.cpp (2): ошибка C2148: общий размер массива не должен превышать 0x7fffffff байт

Платформа: Windows 10 64бит, 16 ГБ ОЗУ

Компилятор: Microsoft (R) C / C ++ Оптимизирующий компилятор Версия 19.16.27027.1 для x64 Copyright (C) Microsoft Corporation.Все права защищены.

1 Ответ

1 голос
/ 10 июня 2019

Это ограничение MSVC. Я попытался скомпилировать ваш код как с 32-битным (x86), так и с 64-битным (x64) компиляторами и получил тот же результат (протестировано с версией компилятора 19.13.26132, MSVC 2017).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...