VS2005: ограничение размера кучи - PullRequest
1 голос
/ 19 сентября 2008

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

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

Ответы [ 3 ]

1 голос
/ 13 марта 2009

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

Linker -> System -> Heap Reserve Size

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

0 голосов
/ 19 сентября 2008

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

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

0 голосов
/ 19 сентября 2008

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

...