如何使用:image选择器避免QSS内存泄漏?

问题描述 投票:0回答:2

几天后,我在软件中搜索内存泄漏的来源,至少找到了它。

因此,步骤:我创建GUI应用程序,将图像添加到.qrc,在Qt Designer中创建表单,在其中添加QPushButton并在styleSheet属性中写入

#closeButton{ image: url(:/system/images/White/Close.png); }

(该按钮名为“ closeButton”)

没有我添加程序的样式表,使用样式表可以正常工作-我收到内存泄漏。

那么在这种情况下如何避免内存泄漏?

qt memory-leaks qtstylesheets
2个回答
0
投票

可以存活到过程终止的对象不一定是内存泄漏,并且该工具无法告诉您哪些是内存泄漏,哪些不是。内存泄漏通常只是从同一程序位置进行多次且从未释放的分配。即使这样,也不一定总是如此。内存泄漏检测需要特殊的测试工具,该工具可以重复执行一系列操作,这些操作应该不会遗留在任何给定程序位置分配的内存多次。然后,如果您发现随着操作次数的增加,留下的存储块数量也会增加,那么您可能会真正泄漏。

我对在进程终止之前释放所有内存的代码非常怀疑:通常这只是浪费时间,并且会延长系统关闭时间,并且是糟糕的UX。当用户单击“退出”按钮时,请确保数据安全(例如,关闭sqlite文件,保存打开的文档-可能与“进行中的工作”一样,下次使用该应用程序时将带回)。致电exit(0)

通常,泄漏检测所花费的不仅仅是使用一个库,该库为您提供了在出口处分配的内存块列表。该库是一个工具,您(一个有思想,有理智的人类开发人员必须使用该工具来解决这个问题:)就像锤子在整个地方随机敲打将不会有用,因此不会成为“检漏仪”本身就是图书馆。

© www.soinside.com 2019 - 2024. All rights reserved.