Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[54.144.95.36] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Да их почти все не любят. Тогда можно так извратиться:
s.Format( Rez ? L"Битмап создался.%c" : L"Ошибка при создании битмапа Er=%d", GetLastError()); |
Сообщ.
#17
,
|
|
|
а зачем?
|
Сообщ.
#18
,
|
|
|
Во-первых, избавляемся от ветвлений. Во-вторых, лишний раз не присваиваем ничего лишнего. Нолик (лишний байт) пишем разве лишь, но это мелко, хоть и не знаю как этого избежать...
|
Сообщ.
#19
,
|
|
|
это излишне, как по мне трудно читать такой код
лучше с else |
Сообщ.
#20
,
|
|
|
Цитата a_n_y_a @ Тогда почему в диспетчере задач памяти указано только 13 Мб? Может эта картинка сжата? Если сжата, а там все нули, то и получится совсем небольшая память? 1) Диспетчер задач показывает размер так называемого рабочего набора страниц (Working Set), т.е. не всех страниц виртуальной памяти процесса, а только тех, для которых в настоящий момент выделена физическая память. В этот размер не входят страницы, сброшенные в файл подкачки (или любой другой проецируемый файл), и новые страницы, для которых зарезервирован диапазон виртуальных адресов, но физ.память еще не выделена. Последнее происходит при вызове функций VirtualAlloc или MapViewOfFile, когда физ.память выделяется не сразу на весь блок, а в фоновом режиме - только по мере обращения к каждой странице на чтение или запись. 2) Особенность работы виндовой динамической памяти заключается в том, что большие блоки памяти (более 0.5 или 1 Мб) всегда выделяются через VirtualAlloc. Поэтому после выделения большого блока занимаемая виртуальная память возрастает сразу на размер этого блока, а физ.память (рабочий набор) - всего на одну или несколько страниц (запись заголовка блока в первую страницу + создание служебных таблиц трансляции страниц). При этом остальные страницы блока помечаются в таблице страниц специальным признаком demand-zero - предоставить обнуленную страницу физ.памяти по первому требованию. Поэтому, да, первоначально картинка содержит одни нули и, условно говоря, хранится в памяти в "сжатом виде" - вместо выделения 4К физ.памяти под каждую страницу первоначально хранится только 4 или 8 байт PTE - структуры описателя страницы в таблице трансляции с соотаетствующим признаком. Но это особенность не битмапа, а любого выделения больших блоков памяти через VirtualAlloc или MapViewOfFile. |
Сообщ.
#21
,
|
|
|
Цитата KILLER @ Смотри на общее потребление оперативной памяти, а не на память конкретного процесса. А где ее смотреть, подскажи пожалуйста. |