
这要分情况了。
如果你的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 提示 内存位置访问无效等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)