标题:一个94K的qt小程序跑在板子上为什么会占三十多兆的内存啊
作者:cao_zhong_yu
日期:2010-02-01 15:46
内容:
我用的qt 版 本是qt-extended-4.4.3
写了一个电子书的浏览界面,主要是浏览目录用,如果是文件夹就进入,如果是文件判断格式,然后用
QProcess调用相应的阅读程序打开
程序一共才94K , 我的板子是六十四兆的内存,跑之前是内存用的5兆,跑之后内存用了三十一兆,还可
以跑 如果想在qpe里调用这个程序就完蛋了
我的问题是在qt里或者是C++里面有哪些操作是很费内存的,还有我的程序里边初始化时都是全局变
量,静态分配的内存
请大家帮帮忙
#1 [rooney 02-01 21:12]
要加载qte的库,那个就几十兆了
#2 [cao_zhong_yu 02-02 15:11]
谢谢关注
我找到费内存的地方,但不知道原因,我大概的描述一下
我定义了两个类,CzyItem,CzyMain.
在CzyMain中我定义了七个CzyItem,相当于七行的列表显示,用来显示文件夹或文件
我想再加张图片进去,就在CzyItem中new 了个全局的QImage , 问题就出来了,这个程序比以前多占了六兆的内存
然后如果我在CzyMain中new一个QImage,然后作为参数在CzyItem初始化时传给它,这样就正常了,内存没改变多少
#3 [318065268 02-02 16:44]
QImage用来做图片处理的,我们能够获取到图片的每个像素点。所以,我猜把它加载到内存里的时候,其格式就不是压缩的JPEG或其它了,就像用windows的画图软件生成的一个位图一样,会比压缩的格式大出很多倍。
静态全局的QImage我也曾试过,运行时不断打印提示信息,说QPainter什么什么的问题。所以我觉得还是给它一个图片路径就行了,真要显示的时候再加载也没什么问题。而且纯粹显示用QPixmap就行了。
#4 [cao_zhong_yu 02-02 18:28]
嗯,受用了,谢谢
png的图片确实很占地方
还有个问题就是不管是在子类还是父类我都是在构造函数中new来声名的,而且都是全局的
为什么在子类中它会那么费内存啊