【发布时间】:2012-04-30 23:15:33
【问题描述】:
正如我在许多问题中所解释的,我正在尝试将软件从 32 位系统迁移到 64 位系统。 我有some problem with malloc() function,但现在我通过更正一个参数来解决它。
在我的那部分代码中,如果我在 32 位系统上运行,我可以使用:
(int**) malloc (const * sizeof(int))
但是,在 64 位系统上,我必须使用:
(int**) malloc (const * sizeof(int64_t))
我想用 if() 条件管理这些十字路口,所以我需要一个 boolean isIt64system() 函数以这种方式运行:
if(isIt64system()) then [64位码]
其他 [32 位代码]
这个函数是否存在于 C++ 中? 是否有任何功能可以告诉我软件是在 32 位系统还是 64 位系统上运行?
【问题讨论】:
-
所以你的意思是说你在两个不同的平台上运行同一个二进制文件?
-
正确的做法是
(int**) malloc (count * sizeof(int*)),或者更好的new int*[count]。 -
您似乎将主机操作系统与应用程序的构建方式混淆了。您不能在运行时重新定义 malloc。它必须编译为 32 位或 64 位,在任何一种情况下,它都将采用 size_t 类型的参数。在 PC 平台上,如果编译为 32 位,size_t 将为 32 位宽,如果编译为 64 位,则为 64 位。无法在运行时更改它。
-
@Henrik:甚至更好地使用向量;)
标签: c++ visual-studio-2008 32bit-64bit 32-bit