2008-09-18 3 views
1

Является ли флаг компилятора VS2005 C++ похожим на флаг Xmx ??? M, поэтому я могу ограничить размер кучи моего приложения, работающего в Windows.VS2005: Ограничить размер кучи

Мне нужно ограничить размер кучи, чтобы я мог заполнить память, чтобы узнать текущую свободную память. (Код также работает во встроенной системе, где это лучший способ получить использование памяти)

+0

Hm - трудно ответить. На каком языке вы используете? C, C++? – 2008-09-18 23:50:16

+0

извините, я сказал gcc, но на самом деле я использую C++ в VS2005 – fabiopedrosa 2008-09-18 23:50:45

ответ

0

Возможно, вам захочется выяснить, может ли утилита gflags (в средствах отладки Windows) это сделать. Он может делать много других интересных вещей с кучей собственных приложений.

0

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

В качестве альтернативы, если у вас есть собственный распределитель, даже если это только оболочка, вы можете отслеживать, сколько памяти было выделено в общей сложности. Если вы знаете доступную сумму, вы можете просто сделать вычитание и сделать это, получив общее количество. Вы также можете получить статистику фрагментации, как и самый большой свободный блок.

1

Вы можете установить размер кучи для вашей программы, установив размер в:

Linker -> System -> Heap Reserve Size

Он также может быть установлен в командной строке компилятора с помощью /HEAP:reserve

Смежные вопросы