Есть ли максимальное число элементов в std::bitset
?Максимальное количество элементов в std :: bitset?
В моем коде (VC++ 2010) 1<<20
сбой при переполнении стека, но 1<<19
работает.
(я имею дело с огромными входами.)
Есть ли максимальное число элементов в std::bitset
?Максимальное количество элементов в std :: bitset?
В моем коде (VC++ 2010) 1<<20
сбой при переполнении стека, но 1<<19
работает.
(я имею дело с огромными входами.)
Насколько я вижу, что это не имеет ничего общего с максимальным числом элементов, поддерживаемых в bitset
, но имеет отношение к количеству памяти, которая может быть выделена на стеке. В VS обычно максимальная память, которая может быть выделена в стеке, равна 1 МБ, и если вы перейдете этот предел, вы получите переполнение стека. Если вам требуется больше, чем этот объем памяти, я бы предложил выделить память из кучи, используя new
, а не выделять на стек. В этом случае распределение памяти будет происходить только тогда, когда new
действительно исчерпает память.
Создание большого объекта 'static' обычно работает. Большинство операционных систем прекрасно справляются с большими исполняемыми двоичными изображениями/глобальными объектами, и я предпочитаю не прибегать к куче. – Potatoswatter
Связанный: [Определить большой битбит в C++] (http://stackoverflow.com/questions/5780112/define-a-large-bitset-in-c) –