LabVIEW应用程序错误:The instruction at "[address x]" referenced memory at "[address y]". The memory could not be "read".



主要软件:
主要软件版本: 7.1
主要软件修正版本: N/A
次要软件: N/A

问题: 在我的应用程序被终止的同时,我会得到以下的错误信息:

LabVIEW: LabVIEW.exe - Application Error
The instruction at "[address x]" referenced memory at "[address y]". The memory could not be "read".


这条错误信息有何含义,我该如何来解决呢?

解答: 当LabVIEW的数据空间中有些东西被损坏的时候,这条错误信息会出现,通常是由于外部动态链接库或者CIN代码引起的。当LabVIEW进行垃圾收集处理时会陷入数据损坏,并且当LabVIEW试图释放一些本不所有资源的时候,LabVIEW会异常退出。

欲解决此问题,可以将所有调用动态链接库的部分从您的LabVIEW代码中去除,看问题能否可以得以解决。大多数情况下,这类数据损坏都是由特殊的动态链接库函数和特殊的输入参数混合在一起导致的,而这类动态链接库函数往往会对输入参数有不同的假设。另外,有些时候,将一个尚未分配内存空间的字符串或者数组传递至动态链接库中,也可以引起这样的问题。同样,有些动态链接库函数会认为字符串缓存为256字节、1K字节或者其他的大小。如果传递进来的字符串缓存的大小比这个小,动态链接库在对缓存进行写操作的时候就会越界,继而导致数据空间受损。

此外,在Call Library Function Node中使用完整路径调用WinAPI动态链接库的可执行VI也同样会导致这样的错误。如果指定动态链接库的路径,当生成可执行的时候,LabVIEW会在“数据”目录下保存该动态链接库的副本。有些动态链接库(例如WinAPI DLLs)只能存在于一个位置,否则当调用的时候会出现错误或者异常退出。因此,当调用WinAPI动态链接库时,要记得在Call Library Function Node中删除动态链接库的路径。

相关链接:
KB 0HBE88A1: When Using the Call Library Function Node, LabVIEW Crashes after the Function Executes
KB 2CLFTII1: LabVIEW Crashes after a VI That Calls a DLL Exits
KB 17BBT4U9: My Stand-Alone Executable Cannot Find My DLL, Even Though I Have Specified the Path for the DLL

附件:





报告日期: 12/18/2006
最近更新: 12/19/2006
文档编号: 3CID293U