Размер кучи зависит от используемого распределителя. Также может быть некоторый вызов Windows API, который ограничивает объем памяти, которую может выделить процесс, но я не знаю об этом, и мне не хочется его искать прямо сейчас, извините. Но в целом, если вы пишете свой собственный распределитель (возможно, просто оберните вокруг предоставленного компилятором malloc()
или new
), вы можете искусственно ограничить размер кучи таким образом.
В качестве альтернативы, если у вас есть собственный распределитель, даже если это только оболочка, вы можете отслеживать, сколько памяти было выделено в общей сложности. Если вы знаете доступную сумму, вы можете просто сделать вычитание и сделать это, получив общее количество. Вы также можете получить статистику фрагментации, как и самый большой свободный блок.
Hm - трудно ответить. На каком языке вы используете? C, C++? – 2008-09-18 23:50:16
извините, я сказал gcc, но на самом деле я использую C++ в VS2005 – fabiopedrosa 2008-09-18 23:50:45