Delphi 调用DLL时内存访问异常
我以前问过一个关于在Delphi()中使用C库的问题。在你的帮助下,我可以打电话给它。除了在一台特定的机器上函数返回一个随机字符串外,在大约20台PC上一切都很顺利。这台机器由赛扬x86处理器供电,因此它不是64/32位问题Delphi 调用DLL时内存访问异常,delphi,dll,memory-leaks,windows-xp,Delphi,Dll,Memory Leaks,Windows Xp,我以前问过一个关于在Delphi()中使用C库的问题。在你的帮助下,我可以打电话给它。除了在一台特定的机器上函数返回一个随机字符串外,在大约20台PC上一切都很顺利。这台机器由赛扬x86处理器供电,因此它不是64/32位问题 有谁能帮我确定为什么这会发生在那台特定的机器上(而不是在任何其他机器上)?为了能够回答上述问题,我们应该知道PC上运行的操作系统无法返回正确的答案,以及其他操作系统。没有这些,我只能猜测问题的原因。可能是: 操作系统问题-运行的操作系统是否提供了功能?(例如:home e
有谁能帮我确定为什么这会发生在那台特定的机器上(而不是在任何其他机器上)?为了能够回答上述问题,我们应该知道PC上运行的操作系统无法返回正确的答案,以及其他操作系统。没有这些,我只能猜测问题的原因。可能是:
- 操作系统问题-运行的操作系统是否提供了功能?(例如:home edition windows版本不支持域。)(尝试在具有相同操作系统的其他计算机上运行(不仅是主要版本,如2000/Me/XP/Vista/7等,还包括home/Enterprise/Ultimate等版本)
- 内存管理问题是否为被调用函数正确保留了内存?如果传递的缓冲区太小,某些函数会返回乱码。(解决方案尝试传递一个非常大的缓冲区,以查看传递的缓冲区是否仍然包含胡言乱语。)
- 呼叫约定问题-您是否检查了是否使用了正确的呼叫约定?(解决方案制作一个使用stdcall的调试生成,并在非工作机器上尝试。)
- 与功能相关的问题-我不知道此DLL的功能是什么。它会优雅地失败吗?是否有可能返回的值看起来只是胡言乱语?(解决方案:检查DLL文件的文档。)
- Unicode Ansi转换错误-您可能会在不知道的情况下将Unicode字符串计算为Ansi或vica。(解决方案:尝试使用
约定查看错误是否消失))GetCID(pWideChar(prm)、pWideChar(uCID)
- 硬件错误(不太可能)如果出现RAM错误,所有响应都可能是随机的。(SOUTION:尝试在另一台配置完全相同的计算机上运行您的程序。如果运行良好,请在电脑上运行内存测试,但结果不正确。)
- 操作系统(不仅是2000/Me/XP/Vista/7等主要版本,还有Home/Enterprise/Ultimate等版本)
- 处理器类
- 一些代码示例在被指控的PC上失败,在其他PC上运行良好。 (包括内存保留。)
- 调用前后CPU窗口的屏幕截图
- 不要忘记显示/描述在运行代码的计算机上发生的情况!(它也可能在那里失败,但由于突发条件,失败被隐藏起来。)