2009-07-28 58 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位的限制。我建议你编写一个小测试应用程序来打印出一个堆栈分配变量的地址,这应该给你一个体面的参考点,说明堆栈在虚拟内存中的位置。