我在C中编写了一个使用NX Open C库的程序。我必须将它编译成.dll,并且作为32位机器上的32位.dll,它可以很好地工作。但是,当我在64位计算机上将相同的代码放在Visual Studio中并指定它为64位编译时,我运行该程序时,它会在释放一些内存的行上崩溃。当我为64位版本注释掉该行时,它运行正常。 NX Open文档表明这是我应该释放的内存。
我的问题是:是什么原因引起的?为什么编码完全相同的程序在64位机器上的64位版本的内存中崩溃,而在32位机器上不是32位版本?这是我应该期待的吗?我做错了什么我可以阻止?或者这是一个更大问题的症状?
版本信息:我正在使用Visual Studio 2005,NX 5.0.6.3,Windows XP SP3
答案 0 :(得分:2)
这很可能是某种内存损坏错误。你要么:
两次释放相同的内存
使用已释放的内存(从而破坏新的内存分配)
在分配的内存之外写入(从而破坏其他分配或内存管理结构)
32位版本中可能存在该错误,但尚未发现,因为它从未损坏过基本数据。
找到这样的错误可能非常困难。因此,我建议使用内存调试器(如Purify,Valgrind或Insure ++)来检测有问题的内存访问的位置。