【发布时间】:2011-12-04 12:09:10
【问题描述】:
我用 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
【问题讨论】:
-
对于任何崩溃,都需要在崩溃(异常,如访问冲突)位置检查调用堆栈。原因不是代码中的错误,细节取决于异常细节。
-
对此有各种可能的解释,但最有可能的是您将指针转换为 32 位整数并因此截断了它。在我们提供更具体的帮助之前,您需要缩小范围。
-
谢谢...我会在获得信息后添加更多信息。
标签: c visual-studio-2005 32bit-64bit dll