| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > сколько памяти выделено виндой под программу? |
| Автор: victor79 15.8.2009, 19:56 |
| как программно узнать, сколько памяти выделила винда под программу? Проблема в том, что встроенный счетчик выделений (все выделения происходят через mymalloc и myfree) показывает в несколько раз меньше выделенной памяти чем отображается в диспетчере задач. |
| Автор: victor79 16.8.2009, 01:14 | ||
mymalloc и myfree в упращенном варианте так
в свою очередь malloc наверняка вызывает какой-нить VirtualAlloc, т.е. выделяет память через операционку, т.е. у операционки где-то хранится, какие куски памяти и сколько ее выделено под процесс (иначе она не могла бы ее освобождать при завершении процессов, в том числе аварийных). Вопрос: как узнать сколько памяти выделено под процесс, объем той самой памяти, которую операционка высвободит если в тек момент завершить программу. Причем в независимости, где эта память располагается, в физической памяти, или в своп файле. |
| Автор: 586 16.8.2009, 03:55 |
| Смотри в msdn описание функции GetProcessMemoryInfo. |
| Автор: victor79 17.8.2009, 08:37 |
| спасибо, утечку памяти нашел - было некорректное использование VirtualAlloc. |
| Автор: GremlinProg 17.8.2009, 11:54 |
и в чем это выражается? ни одного упоминания VirtualAlloc в твоем коде я не вижу |
| Автор: Earnest 18.8.2009, 07:08 |
| Вообще-то malloc стандартно берет память из глобального хипа процесса, и только последний уже где-то внутри АПИ выделяется через VirtualAlloc. Кроме того, не стоит забывать, что и стек и сам образ программы тоже занимают память, что отражается в диспетчере задач. По всей памяти процесса можно пройти с помощью вызовов VirttualQuery, которые расскажут что где лежит. |