Архитектура вашей машины, операционной системы (но обе взаимосвязаны) и ваш компилятор / набор библиотек определяет, сколько памяти вы можете выделить за один раз.
malloc
не нужно , чтобы иметь возможность использовать всю память, которую ОС может ему дать.ОС не требуется , чтобы сделать доступной всю память, имеющуюся на машине (и, например, различные версии Windows Server имеют различную максимальную память по причинам лицензирования )
Но учтите, что ОС может предоставлять больше памяти, чем та, что имеется в машине, и даже больше памяти, чем разрешено материнской платой (скажем, материнская плата имеет одинСлот памяти, который принимает только 1 ГБ карты памяти, Windows может позволить программе выделить 2 ГБ памяти).Это делается с помощью виртуальной памяти, подкачки (вы знаете, файл подкачки, ваш старый и медленный друг :-) Или, например, с помощью NUMA .