gpt4 book ai didi

c - 64 位版本的 DLL 在内存空闲时崩溃; 32位没有

转载 作者:行者123 更新时间:2023-11-30 14:27:36 24 4
gpt4 key购买 nike

我用 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 位版本中,但尚未被发现,因为它从未损坏重要数据。

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

关于c - 64 位版本的 DLL 在内存空闲时崩溃; 32位没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7712969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com