Qt QMap数据清除测试(验证QMap内存正确释放方法)

环境

Qt C++ (msvc编译环境)

测试代码

//定义 动子信息 (可放在.cpp文件 中)
struct MoverInfo{
    uint32_t ID;
    double PartPosition;
    uint16_t ModuleID;
    uint32_t PartID;
    uint32_t TrackID;
    uint32_t TrackID2;
};


//使用Windows任务管理器查看内存使用情况

//定义QMap
QMap<int,MoverInfo*> map;//放在h头文件中使用

//将以下代码放在两个不同的button的槽函数下

//核心代码添加
for(int i=0; i<0x100000; i++){
    struct MoverInfo* info = (struct MoverInfo*)malloc(sizeof(struct MoverInfo));
    memset(info ,0, sizeof(struct MoverInfo));
    info->ID = i;
    map[i] = info;
}

//核心代码删除
for(QMap<int,MoverInfo*>::Iterator it = map.begin();it != map.end();it ++)
{
    delete (MoverInfo*)it.value();
}
map.clear();

QMapQt框架中的一个模板类,用于存储键值对,其中键是唯一的。在QMap中更新值可以使用几种不同的方法,具体取决于您想要执行的操作: 1. 使用`insert()`方法:如果您要添加一个新的键值对或者如果键已经存在,则更新该键的值。如果键不存在,`insert()`方法将添加新的键值对。 ```cpp QMap<QString, int> map; map.insert("key", 1); // 添加键为"key"的键值对,值为1 map.insert("key", 2); // 更新键为"key"的值为2 ``` 2. 使用`operator[]`:这是一个非常直观的方式,通过使用数组索引方式来访问和更新值。如果键不存在,它会自动创建一个新的键值对,并将值设置为默认构造的值,对于基本数据类型这通常是0。 ```cpp QMap<QString, int> map; map["key"] = 1; // 添加键为"key"的键值对,值为1 map["key"] = 2; // 更新键为"key"的值为2 ``` 3. 使用`replace()`方法:这个方法类似于`operator[]`,但是在键不存在时会替换掉现有的键值对。 ```cpp QMap<QString, int> map; map["key"] = 1; // 添加键为"key"的键值对,值为1 map.replace("key", 2); // 更新键为"key"的值为2 ``` 4. 使用`value()`方法:如果您想要获取一个特定键的值,并且希望在键不存在时提供一个默认值,可以使用`value()`方法。 ```cpp QMap<QString, int> map; map.insert("key", 1); int value = map.value("key", 0); // 获取键为"key"的值,如果键不存在,则返回默认值0 ``` 请注意,使用`operator[]`和`replace()`方法在键不存在时会创建新的键值对,如果类型不支持默认构造,这可能会导致编译错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值