我有兩個內存區域,我用VirtualAlloc
:0x1E0000 (Size: 0x39000, Reserve)
和0x219000 (Size: 0x3000, Commit)
分配。這些都在相同的分配邊界內(在這種情況下四捨五入爲0x40000 (64K*4)
),第二個區域從第一個結束處開始。爲什麼我不能在同一分配中保留兩個連續的內存區域,而不用同時調用兩個內存區域?
現在忘記提交部分一分鐘。如果我MEM_RESERVE
第一個0x39000
然後MEM_RESERVE
下0x3000
,我得到ERROR_INVALID_ADDRESS
。但是,如果我同時使用,0x39000+0x3000=0x3C000
,那麼它工作正常,我可以使用MEM_COMMIT
成功提交第二個區域。
這是爲什麼?爲什麼我不能自己保留每個部分而不是一個大的保留區域?在保留第一個區域之後,分配(0x219000-0x21FFFF)
中的剩餘區域將具有MEM_FREE
狀態,那麼我怎麼不能在分配邊界中保留其餘0x7000
的第一個0x3000
?
發表你的評論的代碼。我很難跟隨你想要做的事情。 –