为什么我得到错误“内存已满 - 应用程序停止在节点”?



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

问题: 在我的LabVIEW应用程序中,我在子VI中调用一个DLL,并通过调用库函数节点传递数组及其大小。 由于某些原因,我得到一个“内存已满 - 应用程序停止在节点”错误。

解答: 此错误的第一个可能原因是因为传递给DLL的数组大小为-1,表示空数组。 当尝试在DLL中填充数组时,必须传递已初始化的数组及其大小,如下面链接的知识库中所述。 大小不能是-1,因为当它变成无符号整数时,它变成一个非常大的正数。 要解决此问题,请不要为数组大小传递-1到调用库函数节点。

第二个原因是如果从调用库函数节点传出的数组的大小是-1。 如果DLL中的大小设置为-1以发送一个空数组,那么该数字将更改为一个无符号整数,这将成为一个非常大的数。 要解决这个问题,如果你由于某些原因没有填充数组,传递0作为数组大小。

相关链接: KnowledgeBase 0HBE88A1: Why Does LabVIEW Crash When I Call My DLL?

附件:





报告日期: 02/06/2007
最近更新: 01/03/2017
文档编号: 465HKAAC