2010-03-10 4 views
2

메모리를 예약하기 위해 VirtualAlloc 호출을 정기적으로보고 있습니다. 할당량이 프로세스 당 가상 메모리에 대해 계산되지 않고 대신 시스템 공유 메모리를 사용하도록 2MB를 요청합니다. 장애 발생시 시스템은 100MB가 넘는 실제 메모리를 사용할 수 있다고보고합니다.WinMobile에서 PhysX 메모리가 풍부하더라도 VirtualAlloc이 어떻게 실패 할 수 있습니까?

저는 Windows Mobile 6.1 장치에서 실행됩니다. 지금까지 이것은 장치 별 문제입니다. 그것은 많은 동일한 장치에서 작동하고 하나의 장치에서 실패합니다. 이 장치의 다른 프로세스가 공유 메모리를 예약하고 있으므로 그렇게하지 못하게 할 것인지 결정할 수 있기를 원합니다. 내가 어떻게 할 수 있는지 잘 모르겠다.

내가이 문서에 의존하고 있으며 나는이 문제를 설명 할 수 아무것도 볼 수 없습니다 : http://msdn.microsoft.com/en-us/library/aa908768.aspx

어떤 아이디어? 감사.

+1

'VirtualAlloc'에 전달한 모든 매개 변수의 값은 무엇입니까? – vladr

+0

pHeap = (부호없는 char *) VirtualAlloc (0, 1024 * 1024 * 2, MEM_RESERVE, PAGE_NOACCESS); – glutz78

답변

3

나는 최소한 VirtualAlloc에 (연속적인) 가상 주소 공간이 부족하다고 말하고 싶다.

내가 먼저 to which memory slot 그 이전에 성공적으로 VirtualAlloc 덩어리 내가 주소 공간과 싸우고 누구 참조에 매핑하고, 그 기반으로있어 설정하려고 것입니다. 프로그래밍 방식으로 또는 a tool from William J. Blanke (또는 other similar tools.)을 사용하여이 작업을 수행 할 수 있어야합니다.

+0

나는 동의하고 싶다. – ctacke

+0

링크를 제공해 주셔서 감사합니다. 내 응용 프로그램의 32 MB 공간 내에 연속적인 블록이 없다는 것을 제안하십니까? (최소한 프로세스가 염려하는 것이 무엇입니까?). 큰 2MB 할당이 상위 공유 메모리 영역에서 가져온 것이므로 내 응용 프로그램의 Virtual Addr 공간과 관련이 없다는 것이 전부입니까? 어떤 경우에는 내가이 실패를 생각할 수있는 유일한 이유는 다른 프로세스가 공유 메모리를 적극적으로 예약하는 경우뿐입니다. 내가 알 수있는 한, 그것은 일어나지 않고있다. 내가 놓친 게 있니? 감사. – glutz78

+0

읽기 http://www.tech-archive.net/Archive/WindowsCE/microsoft.public.windowsce.embedded.vc/2004-11/0364.html - 'VirtualAlloc'에 대한 부분이 때때로 프로세스 영역에서 발생합니다. 진실이 아니거나 더 이상 진실이 아니어도 시험을 치러야 만합니다. 윌리엄의 도구 (또는 원격 메모리 뷰어)를 사용할 수 있었습니까? 그리고/또는 어떤 슬롯 (Windows CE 5)'VirtualAlloc'에서 주소를 제공했는지 기록 할 수 있었습니까? – vladr

관련 문제