sadboy123 发表于 2010-6-29 15:16:19

子vi里有xy图会占用大量内存空间吗

问题如题,请高手高手高高手回答,谢谢!!!

totototo 发表于 2010-6-29 16:06:29

个人认为这跟程序架构有很大关系,如果调用完成了它应该会释放。

飞雨天 发表于 2010-7-1 10:04:19

本帖最后由 飞雨天 于 2010-7-1 10:06 编辑

   首先呢,xy图对内存的占用要看输入给xy图的数据的,xy不过是个容器而已,问容器本身占用多大内存,没有任何意义。
   其次,子vi中如果有xy图,并且xy连接到connector pannel,那么,不管主vi中是否要用到该子vi输出,它都会开辟内存。反之,如果不是连接到connector pannel,在子vi不打开的情况下,不占用内存,或者,子vi运行结束会自动释放内存。
   说到自动释放,那可能会问,主vi结束的时候,子vi的xy图如果连接到connector pannel,那会不会自动释放内存?这个也分两种情况,如果子vi输出给主vi其它地方使用,那么,对应该输出分配的内存在主vi结束时候是不会自动释放的。而如果没有输出给主vi,只是连接到子vi的connector pannel,那么,虽然运行到子vi的时候会分配内存,但主vi结束的时候该内存会释放掉。
   说的很像绕口令,不过,如果学过树形数据结构的,如下描述可能会好一点:leaf的内存能自动释放,而interior的内存,是不会自动释放的,即便程序结束。
   那么,interior的内存在什么时候会释放?当然在你的主vi退出内存的时候。
   另外说下一个很常识的东西,就是子vi如果被调用N次,那么,每次调用开辟的都是同一块内存,这个和c里的函数有很大区别。怀疑子vi在编译的时候是被包含到主vi放在同一个模块编译的。
   另外还有一些内存分配方面的东西,由于是在公司做的结论,不好贴上来,以后有机会再说。。。。。
   其实,内存优化是很高级的东东,但如果大胆假设,小心写demo验证,还是很容易得出结论的。比如楼主的问题,自己写个vi,结果立马出来了,不是么?
   至于论坛,就如某前辈说的,论是讨论之论,而不是你问我答。。。。当然,我不是说不要问问题,我个人很喜欢问题,因为这样能保持自己学习LabVIEW的动力,但是,如果能就某主体展开(xcontrol,customize control,multiprocess and communication,api,auto code generation,design pattern,software engineering,LVOOP。。。。),自己做了一些研究,然后放论坛上讨论之,激起大家的兴趣和热情,从而提高大家的水平,如此良性循环,彼此受益。
PS:毕设终于过去,论坛虽然清净了些,但只要帖子的质量在,还是很好的~

tester 发表于 2010-7-1 11:21:00

支持版主
页: [1]
查看完整版本: 子vi里有xy图会占用大量内存空间吗