Почему размер массива ограничен 32 битами?
Давно интересовал вопрос, почему managed массив имеет свойство Length типа int (которое отображается в System.Int32). Получается даже работая в 64битной среде мы по прежнему ограничены этим фактом. Вопрос усложняется еще и тем что разрабатывая например интероп с нативным с++ приложением, мы по прежнему ограничены размером managed массива (например размер std::vector будет ограничем 64 битами).
Minor note: разумеется авторы библиотеки руководствовались cls compliance, но почему тогда не выбрали платформо зависимый тип чтобы поддерживать большее количество элементов на различных платформах? как можно с этим бороться?
Ответы (1 шт):
Есть подозрение, что количество элементов массива не связанно напрямую с ограничениями x32/x64. 2 147 483 647 элемента, тем более, если это элементы стека, а не кучи, несколько избыточно для системы любой разрядности.