关于QMenuBar创建方式的讨论
如果在创建项目的时候,没有勾选自动生成ui文件,此时上述代码是正确的;而如果勾选了自动生成ui文件,上述代码则会出现内存泄漏的问题。因为Qt已经生成了一个QMenuBar了
由于之前程序已经自己创建好了一个QMenuBar,当设置新的QMenuBar的时候,就会导致就的QMenuBar脱离了Qt的对象树,也就意味着后续无法对这个对象进行释放了。
关于上述程序,如果窗口关闭,对象树释放,此时进程也就结束了,而进程结束后,自然所有的内存都会回收给系统,上述内存泄漏所造成的影响也不是特别大;而如果这样的程序出现在一个多窗口的程序中,如果涉及到窗口的频繁调整切换(窗口的频繁创建与销毁),上述内存泄漏就会更加严重一些。
关于这个问题,现阶段计算机内存比较充裕,上述内存泄漏问题也不会特别严重。
如果是服务器程序相比于客户端程序,就对内存泄漏问题比较严重:
(1)服务器需要处理很多请求,每个请求泄漏一点,请求积累下来就会泄漏很多。
(2)服务器需要7*24小时运行。
当然,即使如此,还是希望代码更加规范一些。
使用这样的方式,相当于进行了俩次操作:
- 如果QMenuBar已经存在,直接获取并返回
- 如果QMenuBar不存在,就先创建一个新的,再返回。
如果是获取到已经存在的QmenuBar,这里的设置就是自己替换自己。