Как VirtualAlloc мог потерпеть неудачу (без памяти), несмотря на большое количество физической памяти на WinMobile? - PullRequest
2 голосов
/ 11 марта 2010

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

Я работаю на устройстве Windows Mobile 6.1. Пока что это проблема конкретного устройства. Он работает на многих идентичных устройствах и не работает на одном устройстве. Я хотел бы иметь возможность определить, резервируют ли другие процессы на этом устройстве разделяемую память и, следовательно, мешают мне сделать это. Не уверен, как я могу это сделать.

Это документ, на который я полагаюсь, и я не вижу ничего, что могло бы объяснить эту проблему: http://msdn.microsoft.com/en-us/library/aa908768.aspx

Есть идеи? Спасибо.

1 Ответ

3 голосов
/ 11 марта 2010

Мне хочется сказать, что VirtualAlloc исчерпал (непрерывное) виртуальное адресное пространство, по крайней мере, в том, что касается вашего процесса.

Сначала я попытался бы установить , в какой слот памяти были сопоставлены те ранее успешные блоки VirtualAlloc, и исходя из того, с кем я сражаюсь за адресное пространство. Вы должны быть в состоянии сделать это либо программно, либо с помощью инструмента Уильяма Дж. Бланка (или других подобных инструментов .)

...