Windows的AllocationPreference - 就像在MacOS中设置测试32-> 64位代码一样?

时间:2012-08-18 00:48:49

标签: macos testing 32bit-64bit

正如之前的答案中所提到的,Windows操作系统有一个注册表项,可以强制从Top-Down分配内存,以帮助捕获从32位代码移动时的指针截断问题 - > 64位。

  

HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ AllocationPreference

但是我在MacOS中看不到任何相似之处。我写了一个快速程序来检查,似乎在64位中,所有分配的内存至少需要33位才能代表它们的地址。

我想知道64位MacOS X程序是否会在地址空间中分配内存,可以用32位或更少的速度表示?如果我编译&在32位运行相同的程序,它显然使用较低的32位空间中的地址。

int main(int argc, const char * argv[])
{
    void * ptr = NULL;
        for (int i = 0; i < 20; i++)
        {
            ptr = malloc(10);
            if ((UInt64)ptr > INT32_MAX)
                printf("Pointer = %p > 32 bits required!\n", ptr);
            else
                printf("Pointer = %p <= 32 bits ok\n", ptr);
        }
    return 0;
}

感谢您的帮助!

马特

0 个答案:

没有答案