Не-пост про VM

Персональный блог одноименного форумчанина. Человека и парохода, не побоюсь этого сравнения :)

Модератор: tyomitch

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Не-пост про VM

Сообщение tyomitch » 16.05.2006 (Вт) 21:15

Это, опять же, не пост, а пара быстрых заметок на полях.


* Описание функции VirtualFree значительно разнится в онлайновом MSDN и в моей локальной версии, которая October 2000. В онлайне -- правильно: флаги (флаги?) MEM_RELEASE и MEM_DECOMMIT нельзя использовать совместно. Не попадитесь.


* То, что задаётся параметром dwStackSize функции CreateThread -- это размер закоммиченной части стека. Резервируемый объём берётся из PE-заголовка текущего процесса и равен по умолчанию 1Мб. Не правя PE-заголовок, невозможно создать нить со стеком, который бы занимал меньше чем 1Мб в VM.

* Но начиная с Windows XP, как я только что узнал из онлайнового MSDN, добавлен флаг STACK_SIZE_PARAM_IS_A_RESERVATION, который в этой ситуации спасает.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.05.2006 (Ср) 3:44

Хм...
В моей October 2001 написано "can be one of the following values". Да, в онлайне добавлено ещё и "Do not use this value with MEM_RELEASE" и "Do not use this value with MEM_DECOMMIT", но ведь "can be one of the following values" достаточно? Если можно указывать несколько флагов, в MSDN пишут "can be one or more of the following values".
В 2003 всё как в онлайне.


Концептуальный вопрос: стоит ли добавить в Waiter STACK_SIZE_PARAM_IS_A_RESERVATION, или же не полагаться на то, что 64К будет всегда достаточно для системных функций (даже несмотря на то, что этот предел определён в MSDN как нижний)?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.05.2006 (Ср) 6:07

GSerg писал(а):Хм...
В моей October 2001 написано "can be one of the following values". Да, в онлайне добавлено ещё и "Do not use this value with MEM_RELEASE" и "Do not use this value with MEM_DECOMMIT", но ведь "can be one of the following values" достаточно? Если можно указывать несколько флагов, в MSDN пишут "can be one or more of the following values".
В 2003 всё как в онлайне.

У меня именно так и написано.

И кроме того, в описании параметра dwSize сказано: "If the dwFreeType parameter includes MEM_RELEASE, this parameter must be zero."

Ведь понапишут же :-?
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.05.2006 (Ср) 6:15

Значит ага, исправили в 2001. Обновляйся давай. October 2001 - последняя для VS6.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Tyomitch

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

    TopList