/ / VS2005: Ограничаване на размера на купчината - визуално C ++, памет, куп

VS2005: Ограничаване на размера на купчината - визуално C ++, памет, купчина

Дали флагът на компилатора VS2005 C ++ е подобен на флага на Xmx ??? M java, така че мога да огранича размера на графиката на моето приложение, работещо на Windows.

Трябва да огранича размера на купчината, за да мога да запълня паметта, за да разбера текущата свободна памет. (Кодът също работи на вградена система, където това е най-добрият начин да се използва паметта)

Отговори:

0 за отговор № 1

Може да потърсите дали инструментът gflags (в инструментите за дебъгване на Windows) може да направи това. Тя може да направи много други интересни неща с куп на родния приложения.


1 за отговор № 2

Можете да зададете размера на купчината за програмата си, като зададете размера в:

Linker -> System -> Heap Reserve Size

Може да се зададе и на командния ред на компилатора /HEAP:reserve


0 за отговор № 3

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

Като алтернатива, ако имате свой собствен разпределител,дори и само обвивка, можете да следите колко памет е била разпределена общо. Ако знаете наличната сума, можете просто да направите някои изваждане и да се направи с получаване на общата сума. Също така може да получите статистически данни за фрагментацията, като най-големия свободен блок.