Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

Linker -> System -> Heap Reserve Size

Его также можно установить в командной строке компилятора, используя /HEAP:reserve

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top