2010-07-03 1 views
1

MEMORY_BASIC_INFORMATION 구조에서 BaseAddressAllocationBase이라는 각각 두 개의 PVOID 변수를 찾습니다.스택 및 스택 기본 주소

스레딩에 관한 책을 읽었으며 스택에 스택 공간을 가져 오는 방법을 자세히 설명했지만 제대로 이해하지 못하고 있습니다.

위에서 언급 한 구조의 BaseAddress는 현재 스레드 스택의 가장 높은 주소 또는 가장 낮은 주소를 가리 킵니까? 스택이 아래쪽으로 커지기 때문에 가장 낮은 쪽이 위쪽과 아래쪽에서 가장 높습니다.

AllocationBaseBaseAddress 필드의 차이점은 무엇입니까? 나는 MSDN 문서가 매우 설명 적이라는 것을 알지 못한다. 그래서 나는 누군가가 좀더 명확하게 설명 할 수 있기를 바라고있다.

내 책에는 'AllocationBase'주소가 TEB 구조의 'DeallocationStack'필드와 동일하지만 스택의 끝 부분을 가리키며 가장 높은 주소라고 생각한다고 나와 있습니다 그것의 BASE 이후로, 스택이 아래쪽으로 자라기 때문에 가장 낮은 주소 여야한다고 생각합니다. 그래서 나는 무엇에 대해 혼란스러워합니까? this 페이지 별

는 'DeallocationStack는'됩니다 : 최대 스택 크기는

누군가가 내 혼란을 이해하는 데 도움이 될 수

필드 DeallocationStack에 저장됩니다? MEMORY_BASIC_INFORMATION 구조에서

+0

스레드에서 어떤 책을 공유 했습니까? :) 감사. – CaseyJones

+1

Joe Duffy의 Windows 동시 프로그래밍. –

답변

2

:..

  • 기본 주소 - 조회 된 메모리 페이지의 주소 (VirtualQuery (LPCVOID lpAddress, ...)
  • AllocationBase - 할당 된 메모리 블록의 시작은 BaseAddress> = AllocationBase

스택을 쿼리하는 경우 AllocationBase는 스택의 가장 낮은 주소 (스택 맨)가됩니다.