2009-07-28 59 views
1

我正在使用一直以來都是32位的Windows程序代碼庫。我正在試圖使這個代碼庫64位乾淨。通過設置「AllocationPreference」註冊表值在堆管理器中打開「自上而下」的分配對於解決代碼將指針強制降爲32位值(例如整數)和返回的錯誤非常有用,因此失去這是x64上最重要的一半指針值。爲了獲得類似的調試好處,我想強制我的進程的堆棧的虛擬地址遠高於2 ** 32。有沒有辦法在Windows Vista x64上做到這一點?對於它的價值,我使用Visual Studio 2008來構建這個代碼庫。在x64 Windows程序中選擇堆棧的虛擬地址

+0

你如何打開「自上而下的堆管理器」? – 2009-08-26 13:23:49

回答

0

我不確定Windows x64的情況,但是我非常確定,對於任何64位應用程序,堆棧指針已經在非常大的64位地址處開始,應用程序代碼位於低地址和堆在中間的某處。這或多或少是過程記憶的「傳統」佈局。我知道在我的MacBook上,我得到的堆棧指針地址遠遠高於32位的限制。我建議你編寫一個小測試應用程序來打印出一個堆棧分配變量的地址,這應該給你一個體面的參考點,說明堆棧在虛擬內存中的位置。