64位版本的DLL在内存上崩溃; 32位没有

时间:2011-10-10 12:47:11

标签: c visual-studio-2005 32bit-64bit dll

我在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

1 个答案:

答案 0 :(得分:2)

这很可能是某种内存损坏错误。你要么:

  • 两次释放相同的内存

  • 使用已释放的内存(从而破坏新的内存分配)

  • 在分配的内存之外写入(从而破坏其他分配或内存管理结构)

32位版本中可能存在该错误,但尚未发现,因为它从未损坏过基本数据。

找到这样的错误可能非常困难。因此,我建议使用内存调试器(如Purify,Valgrind或Insure ++)来检测有问题的内存访问的位置。