首页 > 系统相关 >Qt QVector数据清理和内存清理

Qt QVector数据清理和内存清理

时间:2024-03-05 18:33:23浏览次数:16  
标签:Qt QVector 清理 内存 vec 清空 swap

原因

  在处理大数据时,发现QVector直接用clear后台查看程序所占用的内存并没有下降

QVector数据清理

1 QVector<int>example_vec;
2 example_vec.clear();

QVector内存清理

1 QVector<int>example_vec;
2 example_vec.shrink_to_fit(); //程序运行到此处时内存才被降下去

QVector另外一种清空方式

QVector().swap(a):清空一个 QVector 对象 a 的内容

  • 具体解释:QVector 是 Qt 框架提供的一个动态数组容器类,用于存储和操作元素的集合。通过调用 swap() 函数,可以交换两个容器的内容,包括其中存储的元素。在这个特定的用法中,QVector() 创建了一个匿名的空 QVector 对象。然后,通过调用 swap(a),将这个空的 QVector 对象与 a 进行内容交换。由于交换后匿名的空 QVector 对象没有任何元素,因此实际上就达到了清空 a 的目的。
  • 好处:通过交换而不是逐个删除元素,可以更高效地清空 QVector 对象。在交换过程中,swap() 函数只需要交换指针,而不需要逐个删除元素,因此速度更快。
  • 注意的是,swap() 操作会改变对象的内容,因此在执行 swap() 后,a 将成为空的 QVector 对象。

例程:

 1 #include <QVector>
 2 #include <QString>
 3 #include <QDebug>
 4 
 5 int main()
 6 {
 7     QVector<QString> a;
 8     a.append("Item 1");
 9     a.append("Item 2");
10     a.append("Item 3");
11 
12     qDebug() << "原始 QVector a 的内容:" << a;
13 
14     QVector<QString>().swap(a);
15 
16     qDebug() << "清空后的 QVector a 的内容:" << a;
17 
18     return 0;
19 }

 

标签:Qt,QVector,清理,内存,vec,清空,swap
From: https://www.cnblogs.com/ybqjymy/p/18054634

相关文章

  • 这样清理微信,硬盘分分钟多出50GB
    这样清理微信,硬盘分分钟多出50GB:https://blog.csdn.net/m0_69862284/article/details/129095366?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-1-129095366-blog-127171797.235^v43^pc_blog_bottom_relevance_base9&spm=1001.2101.3001.......
  • shell-应用日志清理脚本(通用)
    应用日志清理脚本(通用)#!/bin/bash#================================================================#HEADER#================================================================#Filenameclear-logs.sh#Revision0.0.3#Date......
  • (续)signal-slot:python版本的多进程通信的信号与槽机制(编程模式)的库(library) —— 强化学
    前文:signal-slot:python版本的多进程通信的信号与槽机制(编程模式)的库(library)——强化学习ppo算法库sample-factory的多进程包装器,实现类似Qt的多进程编程模式(信号与槽机制)——python3.12版本下成功通过测试......
  • Qt Creator 内存分析
    Ubuntu内存分析安装sudoapt-getinstallvalgrind打开Qtcreator->Analyze->valgrind内存分析器Memcheck会列出可能内存泄露的文件(有很多是误报需要仔细分辨)Window内存分析下载Heobhttps://github.com/ssbssa/heob/releases解压到英文目录.exe打开Qtcreator->An......
  • Qt 解决PLC与QModbusTcpClient通信自动断开
    项目场景:提示:这里简述项目相关背景:例如:项目场景:QModbusTcpClient通信问题描述提示:这里描述项目中遇到的问题:QModbusTcpClient连接后,稍微停一段时间,就会出现QModbusDevice::UnconnectedState原因分析:提示:这里填写问题的分析:1.网络原因2.服务器原因......
  • Qt Visual Leak Detector 输出解析(三)
    1.使用方式在QT中使用VLD的方法可以查看另外几篇博客:QT使用VisualLeakDetector(方式一)QT使用VisualLeakDetector(方式二)QT使用VisualLeakDetector(方式三)本次测试使用的环境为:QT5.9.2,MSVC201532bit,Debug模式,VLD版本为2.5.1,VLD配置文件不做任......
  • Qt Visual Leak Detector 输出解析(四)
    1.使用方式在QT中使用VLD的方法可以查看另外几篇博客:QT使用VisualLeakDetector(方式一)QT使用VisualLeakDetector(方式二)QT使用VisualLeakDetector(方式三)本次测试使用的环境为:QT5.9.2,Debug模式,VLD版本为2.5.1,VLD配置文件不做任何更改使用默认配......
  • Qt Visual Leak Detector 输出解析(一)
    1.使用方式在QT中使用VLD的方法可以查看另外几篇博客: QT使用VisualLeakDetector(方式一)QT使用 VisualLeakDetector(方式二)QT使用 VisualLeakDetector(方式三) 本次测试使用的环境为:QT5.9.2,MSVC201532bit,Debug模式,VLD版本为2.5.1,VLD配置文......
  • QT Visual Leak Detector 输出解析(二)
    1.使用方式在QT中使用VLD的方法可以查看另外几篇博客:QT使用VisualLeakDetector(方式一)QT使用VisualLeakDetector(方式二)QT使用VisualLeakDetector(方式三)本次测试使用的环境为:QT5.9.2,MSVC201532bit,Debug模式,VLD版本为2.5.1,VLD配置文件不做任何......
  • Qt 使用 Visual Leak Detector(方式二)
    1.使用前的准备参考本人另一篇博客安装VisualLeakDetector下载vld-2.5.1-setup.exe并按步骤安装VLD。这一种使用方式的特点是,在一台电脑上安装完成后,需在项目pro文件中指明库及头文件的路径,然后在mian.cpp文件中#include"vld.h"。当把项目拷贝到别的电脑上编译......