LabVIEW程序中用imag ceate分配了内存,没用imag dispose释放,有什么后果

LabVIEW程序中用imag ceate分配了内存,没用imag dispose释放,有什么后果,第1张

这要分情况了。

如果你的IMAQ Createvi的Image Name(图像名字)在程序运行过程中一直是变化的,每次执行创建 *** 作,程序都会分配一个内存空间给的图像,直到内存报错。

一般情况我们都是固定的图像数量及名称,所以影响并不大,程序关闭后也会自动释放。

有问题请继续。

内存泄露基本上都是由于编程不严谨造成的。没有什么一次性的招数可以解决。只能认真仔细地审核源程序。查找造成泄露的地方。最常见的就是反复打开某个资源而没有关闭。比如打开某个引用,没有关闭它,下次需要使用时却又一次打开统一资源。如果这种打开是放在某个循环中反复 *** 作,内存很快就会溢出。

参见下图,如果最右侧的“关闭文件”不连接,程序运行并不会报错,但是会内存泄露

确认您选择了和DLL相同的调用规范

使用C调用规范时,调用方负责清空堆栈。使用标准调用规范时,被调用函数负责清空堆栈。如果调用方 (LabVIEW) 和被调用的DLL 函数不使用相同的调用规范,那会出现:要么它们都将数据移出堆栈或者它们都不清空堆栈。任意一种情况会在被调用函数返回的时候导致 LabVIEW崩溃。调用规范在调用函数节点窗口的右下角设置!

最有可能的情况是,把‘打开Excel连接’、‘串口初始化’或者‘USB初始化’这些 *** 作放在了循环内,并且没有执行关闭的 *** 作。

简单的说,创建连接或硬件初始化是需要向系统申请内存资源的。关闭连接是让系统释放这些资源。

而如果把这些 *** 作放在循环中,软件就会不断的申请新的资源。所以时间一长就会很慢。

解决方法是,吧这些 *** 作放得循环外,软件启动时只运行一次。软件退出时,结束循环,再关闭这些资源。这样就可以了。

另外有个使用windwos的任务管理器,可以监视你的软件是否吃内存,重复申请资源。

以上就是关于LabVIEW程序中用imag ceate分配了内存,没用imag dispose释放,有什么后果全部的内容,包括:LabVIEW程序中用imag ceate分配了内存,没用imag dispose释放,有什么后果、labview内存泄漏怎么解决、Labview 运行VI时 调用DLL 提示 内存位置访问无效等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10104652.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存