Размер кучи зависит от используемого распределителя. Также может быть какой-то вызов Windows API, который ограничивает объем памяти, который может выделить процесс, но я не знаю ни одного, и мне не хочется сейчас его искать, извините. Но в целом, если вы пишете свой собственный распределитель (может быть, просто оборачиваете оператор malloc()
или new
, предоставляемый компилятором), вы можете искусственно ограничить размер кучи таким образом.
В качестве альтернативы, если у вас есть свой собственный распределитель, даже если это просто оболочка, вы можете отслеживать, сколько памяти было выделено в общей сложности. Если вы знаете доступную сумму, вы можете просто сделать некоторое вычитание и покончить с получением суммы. Вы также можете получить статистику фрагментации, например, самый большой свободный блок.