我有一个64位应用程序,它会因故障类型转换操作而崩溃。该应用程序是用C ++开发的。我们观察到的错误代码是:
PtClass* obj = new PtObject();
funct->DoSpecificTask((o_4ub)obj) //where o_4ub is 32bit pointer variable.
现在,我们知道这是问题代码,但是,这种崩溃只发生在一台机器上。 如果我们尝试相同的场景(许多随机场景),它不会在相同配置的其他机器上崩溃(win server 2008 R2)。
根据我的分析,它与地址空间有关,当它在机器1中超过32位时,我们得到了崩溃(在向下转换期间)。可能在机器2中,分配的地址空间不超过32位所以我们不会在向下倾斜时崩溃。
我的问题是,我们能做什么,所以每次机器2都会发生崩溃? 比如,我的应用程序应该分配总是超过32位的任何地址空间。(可能导致崩溃)