MEMORY_BASIC_INFORMATION構造体では、とBaseAddress
と呼ばれる2つのPVOID変数が見つかりますAllocationBase
。
スレッドに関する本を読んでいて、スタックスペースをスタックに残す方法について詳しく説明していますが、正しく理解していないことがあります。
上記の構造のBaseAddressは、現在のスレッドスタックの最高のアドレスを指しているのですか、それとも最低のアドレスを指しているのですか?スタックは下向きに成長するため、最低は上部に、最高は下部になります。
AllocationBase
とBaseAddress
フィールドの違いは正確には何ですか?MSDNのドキュメントはあまり説明的ではないので、誰かがもう少し明確にできることを望んでいますか?
私の本では、「AllocationBase」アドレスはTEB構造の「DeallocationStack」フィールドと同じであるとも述べています。これは、スタックの最後を指していると言っています。これは、私が最も高いアドレスだと思っていましたが、そのBASE以降、スタックが下に向かって大きくなるので、それが最も低いアドレスになるはずだと思います。だから私は何が何であるかについてちょっと混乱していますか?
このページによると、「DeallocationStack」は次のとおりです。最大スタックサイズはフィールドDeallocationStackに格納されます
誰かが私の混乱を理解するのを手伝ってもらえますか?