Dav*_*.it 0 c++ 32-bit visual-studio-2008 32bit-64bit
正如我在许多问题中解释的那样,我正在尝试将软件从32位系统转移到64位系统.我对malloc()函数有一些问题,但现在我通过更正参数来解决它.
在我的代码的那部分,如果我在32位系统上运行,我可以使用:
(int**)malloc(const*sizeof(int))
但是,在64位系统上,我必须使用:
(int**)malloc(const*sizeof(int64_t))
我想用if()条件管理这些十字路口,所以我需要一个boolean isIt64system()函数,它的行为方式如下:
if(isIt64system())然后[64位代码]
否[32位代码]
这个函数是否存在于C++中?是否有任何功能告诉我软件是在32位系统还是64位系统上运行?
不要编写两个与大小相关的分支,而只需编写一个正确的可移植代码路径.在你的情况下:
(int**)malloc(count*sizeof(int*));
Run Code Online (Sandbox Code Playgroud)
无论int*系统的大小如何,这都将正常工作.
if(sizeof(int*) == sizeof(int))
x = (int**)malloc(count*sizeof(int));
else if (sizeof(int*) == sizeof(int64_t))
x = (int**)malloc(count*sizeof(int64_t));
Run Code Online (Sandbox Code Playgroud)
希望你能看到代码是多么荒谬,以及如何用一个构造良好的malloc调用代替它.