QTableWidget内存释放问题
Qt的内存管理基本上是不需要操心的。之前总感觉类似QTableWidget的控件操作很不方便,没有类似ios的cell复用,应该也是可以自己实现的,今天谈谈QtableWidget的释放问题。一直担心QTableWidget使用不好会造成内存泄漏,所以就研究了一下。创建的过程都一样
for(int i = 0; i < row; i++){for(int j = 0; j < column; j++){QPushButton *btn = new QPushButton();btn->setText(QString("%1").arg(i));ui->tableWidget->setCellWidget(i, j, btn);list.append(btn);}}
表格初始占用内存大概7~8M;创建1000行,5列占用21M左右。
两个按钮,反复创建和清空
第一种清空方式:
int num = ui->tableWidget->rowCount();for(int i = 0; i < num; i++){ui->tableWidget->removeRow(0);}ui->tableWidget->clear();
第一种清空方式,经过反复验证,内存下降到13M左右,且不会崩溃。
第二种方式:
记录控件的指针
if(list.size()){for(int i = 0; i < list.size(); i++){delete list.at(i);}list.clear();}
这种并没有什么效果,内存没有什么变化,始终在21M左右,可能引发崩溃。
第三种方式:
ui->tableWidget->clear();
第四种方式
ui->tableWidget->clearContents();
三、四两种方式的效果最好,内存下降到11M左右。
QTableWidget内存释放问题相关推荐
- openCV内存释放问题
转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7586847 前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃, ...
- 深拷贝与浅拷贝~动态内存释放有关
浅拷贝就是对象的数据成员之间的简单赋值,如你设计了一个没有类而没有提供它的复制构造函数,当用该类的一个对象去给令一个对象赋值时所执行的过程就是浅拷贝,如: class A{ public: A(int ...
- linux内存系统管理,Linux内存管理之伙伴系统(内存释放)
Linux内核伙伴系统中页面释放,主函数为free_pages() 一.上层操作 void free_pages(unsigned long addr, unsigned int order){if ...
- 【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )
文章目录 一.结构体中嵌套二级指针 1.结构体中嵌套二级指针 类型声明 2.为 结构体内的二级指针成员 分配内存 3.释放 结构体内的二级指针成员 内存 二.完整代码示例 一.结构体中嵌套二级指针 1 ...
- 【C 语言】结构体 ( 结构体中嵌套一级指针 | 分配内存时先 为结构体分配内存 然后再为指针分配内存 | 释放内存时先释放 指针成员内存 然后再释放结构头内存 )
文章目录 一.结构体中嵌套一级指针 1.声明 结构体类型 2.为 结构体 变量分配内存 ( 分配内存时先 为结构体分配内存 然后再为指针分配内存 ) 3.释放结构体内存 ( 释放内存时先释放 指针成员 ...
- linux内存释放和使用限制
1.内存释放 命令:echo 1 > /proc/sys/vm/drop_caches 解释: drop_caches的值可以是0-3之间的数字,代表不同的含义: 0:不释放(系统默认值) 1: ...
- map的内存释放问题
map.clear() 只是把map清空了,但是内存没有释放,如果要释放内存不止是要clear()掉,还要和一个空的map来进行swap,将内存释放. 注意map中如果元素不是基本类型,也要进行内存释 ...
- 有关内存释放的一些问题
转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7586847 前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃, ...
- 【学习笔记】类对象的内存释放
类对象的内存释放 整理转自-<SAP ABAP 面向对象程序设计(原则.模式及实践)> 类对象与其他数据变量一样,都是要占据程序内存的,如果确定后续程序不会再使用对象实例,我们就可以删除对 ...
最新文章
- usb for android,libusb
- 9适应之力加多少攻击_NBA球星生涯最低分都是多少?詹皇碰上麦迪仅得3分,哈登最低1分...
- 76. Minimum Window Substring
- 源码共享,希望一起互相学习
- 高仿小红书引导页实现效果
- Mac安装Spring Boot CLI
- 如何用c语言读文件,如何用C语言读写文件
- 关于Bandicam使用心得
- 7440 GT540
- xmake v2.5.9 发布,改进 C++20 模块,并支持 Nim, Keil MDK 和 Unity Build
- BGP路由器协议排错教程:BGP 对等体翻动问题
- Android:安卓实现高考倒计时功能
- threejs加载服务器文件,如何使用Three.js加载obj和mtl文件
- Axapta program, involve MenuItem:程序定义MenuItem
- 阿德莱德大学语言班成绩为C,2020年阿德莱德大学语言班学习经历分享
- 2021企业邮箱购买平台,2021常用电子邮箱有哪些?什么邮箱安全?
- Linux——gdb调试时多进程切换方法(attach/follow-fork-mode)
- gitee最详细使用教程,汇总了全网,看这一篇就够了
- 网站项目策划的确立过程分析
- Python的自定义模块细讲