当前位置: 首页 > news >正文

Qt std :: bad_alloc

头图

文章目录

    • 摘要
    • 问题出现原因
    • 第一种 请求内存多余系统可提供内存
    • 第二种 地址空间过于分散,无法满足大块连续内存的请求
    • 第三种 堆管理数据结构损坏
    • 稍微总结下
    • 没想到还能更新
    • 参考

关键字: stdbadallocOOM异常退出

摘要

今天又是被BUG统治的一天,刚使用物理方法解决了“QVector "isDetached()"又来一个”std :: bad_alloc“,这个问题更是没法下手。只能摸索尝试,仅此记录。

问题出现原因

根据问题名字,猜测应该就是内存申请失败造成的。这里引用网友内容

  1. 该进程请求的内存多于可以提供的内存
  2. 地址空间过于分散,无法满足大块连续内存的请求
  3. 堆管理数据结构已损坏

第一种 请求内存多余系统可提供内存

这里最担心其实就是内存溢出了,也就是请求内存多余系统可以提供的内存了,我里面有好几个容器,如果是申请了,没有释放,那内存溢出基本是妥妥了吧,所以排查代码,找到容器new 的地方,检查一下。完了在机器上一直监控程序内存运行情况

image-20230207135355952

比较常见的饿解决方法就是在new的地方使用try-catch来解决,但是Qt里面会有大量的new操作,在 STACK OVERFLOW有一个帖子,可以看一下。

image-20230207135910416

所以我没有针对大量的new操作做 try-catch操作,这两我将两个我每次都会auto 的容器做了static 操作,目前正在测试,根绝我实际的程序内容,我确定如果是内存不够,那就是这两容器频繁申请造成的结果,但是这个修改其实我自己也不会报太大希望,因为我的变量是在函数内,理论上,函数执行完了,就应该被销毁才对。而且我用的是auto,根据我浅陋的对Qt的了解,这里我没有对容器进行写操作,所以不会触发Qt 的深拷贝操作,仅仅是新的变量指向了原来容器的地址。所以这样修改应该不会造成内存溢出这个问题吧,暂且尝试一下下。

第二种 地址空间过于分散,无法满足大块连续内存的请求

这个问题,目前没有找到啥好的解决方法,有两个链接可以参考一下

https://learn.microsoft.com/zh-CN/troubleshoot/developer/webapps/aspnet/health-diagnostic-performance/troubleshoot-outofmemoryexception

https://learn.microsoft.com/zh-cn/archive/blogs/tess/who-is-this-outofmemory-guy-and-why-does-he-make-my-process-crash-when-i-have-plenty-of-memory-left

第三种 堆管理数据结构损坏

嘿嘿,这种神仙问题,岂是我等屁民能理解的,

https://www.codenong.com/21463585/

https://blog.csdn.net/qq_16542771/article/details/104349243

稍微总结下

找了这么多资料下来,基本核心思想都是找自己代码是不是有内存管理问题,所以还是老实Debug吧,看看具体问题出现在哪里了,我这里还用到一个方法,就是把代码回滚到上一个版本测试,看程序是否崩溃,如果不崩溃,那就对比下,在一个个排查。就这样。

没想到还能更新

今天带逐段代码排查的时候,发现这段代码注释掉就不会崩溃,至少目前是这样,但是呢,我有没有发现这段代码哪里有问题。

微信图片_20230221091634

想着可能是auto 的问题,或者迭代器的问题,所以我改了一遍代码

image-20230221091944957

目前在跑测试,看看结果咋样。

参考

https://qa.1r1g.com/sf/ask/1502450981/

https://blog.csdn.net/english72428/article/details/127041276

https://blog.csdn.net/mercy_ps/article/details/81347067

https://cloud.tencent.com/developer/section/1012708

https://stackoverflow.com/questions/1308052/policy-with-catching-stdbad-alloc

https://stackoverflow.com/questions/52638843/qt5-throws-stdbad-alloc

https://learn.microsoft.com/zh-CN/troubleshoot/developer/webapps/aspnet/health-diagnostic-performance/troubleshoot-outofmemoryexception

https://learn.microsoft.com/zh-cn/archive/blogs/tess/who-is-this-outofmemory-guy-and-why-does-he-make-my-process-crash-when-i-have-plenty-of-memory-left

https://blog.csdn.net/weixin_39094034/article/details/110225908

https://blog.csdn.net/liuzehn/article/details/80830279


博客签名2021

相关文章:

Qt std :: bad_alloc

文章目录摘要问题出现原因第一种 请求内存多余系统可提供内存第二种 地址空间过于分散,无法满足大块连续内存的请求第三种 堆管理数据结构损坏稍微总结下没想到还能更新参考关键字: std、 bad、 alloc、 OOM、 异常退出摘要 今天又是被BUG统治的一天&a…...

《设计模式》装饰者模式

《设计模式》装饰者模式 装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许在不改变现有对象结构的情况下,动态地添加行为或责任到对象上。在装饰者模式中,有一个抽象组件(Component)…...

一文说清Kubernetes的本质

文章目录Kubernetes解决了什么问题?Kubernetes的全局架构Kubernetes的设计思想Kubernetes的核心功能Kubernetes如何启动一个容器化任务?Kubernetes解决了什么问题? 编排?调度?容器云?还是集群管理&#xf…...

信息发布小程序【源码好优多】

简介 信息发布小程序,实现数据与小程序数据同步共享,通过简单的配置就能搭建自己的小程序。,基于微信小程序开发的小程序。 这个框架比较简单就是用微信原生开发技术进行实现的,可以用于信息展示等相关信息。其中目前APP比较多&am…...

创新型中小企业申报流程

据工业和信息化部《优质中小企业梯度培育管理暂行办法》(工信部企业〔2022〕63号)和省《优质中小企业梯度培育管理实施细则》(鲁工信发〔2022〕8号,以下简称《细则》),现就做好2022年山东省创新型中小企业评…...

【UE4 Cesium】加载离线地图

主体思路:先使用水经注软件下载瓦片数据,再使用Python转换瓦片数据格式(TMS),使用Nginx发布网络服务,最后将网络服务加载到UE中。步骤:使用水经注下载瓦片数据,这里下载的是全球七级…...

Spring面试题

目录 Spring、Springmvc、Springboot的区别是什么 SpringMVC工作流程是什么 SpringMVC的九大组件有哪些 Spring的核心是什么 spring的事务传播机制是什么 Spring框架中的单例Bean是线程安全的么 spring框架中使用了哪些设计模式及应用场景 spring事务的隔离级别有哪些?…...

动态网站开发讲课笔记03:HTTP协议

文章目录零、本节学习目标一、HTTP概述(一)HTTP的概念1、HTTP的概念2、HTTP协议的特点(1)C/S模式(2)简单快速(3)灵活(4)无状态(二)HTT…...

2023年天津财经大学珠江学院专升本专业课考试题型

天津财经大学珠江学院关于2023年高职升本科专业课考试时间及题型一、专业课考试 (一)时间安排 2023年天津财经大学珠江学院高职升本科专业课考试定于2023年3月25日14:00-17:00进行,凡报考工商管理、旅游管理、税收学专业的考生&am…...

五方面提高销售流程管理的CRM系统

销售充满了不确定性,面对不同的客户,销售人员需要采用不同的销售策略。也正因为这种不确定性,规范的销售流程对企业尤为重要,它会让销售工作更加有效,快速地实现成交。下面小编给您推荐个不错的CRM销售流程管理系统。 …...

AutoCAD通过handle id选择实体

获得实体的handle id。注意是handle id 不是id,方法有2种:方法(a):通过ArxDeg插件(ObjectARX附带的源码编译得到:\samples\database\ARXDBG)查找:此handle id本来就是16进…...

页面状态码的含义

使用互联网产品或服务的过程中,会遇到网页报错的情况, 比如404、505等,具体这些数字有什么含义呢?本文基本涵盖了99%的报错情况,可供大家查询使用。 状态码的定义 状态码一般是由3位数字和原因短语组成的&#xff08…...

Redis 越来越慢?常见延迟问题定位与分析

Redis作为内存数据库,拥有非常高的性能,单个实例的QPS能够达到10W左右。但我们在使用Redis时,经常时不时会出现访问延迟很大的情况,如果你不知道Redis的内部实现原理,在排查问题时就会一头雾水。很多时候,R…...

【python】python-socketio+firecamp使用踩坑指南

server.py: import eventlet import asyncioeventlet.monkey_patch()import socketio import eventlet.wsgisio socketio.Server(async_modeeventlet, cors_allowed_origins*) # 指明在evenlet模式下sio.event def connect(sid, environ):print(f"connect, sid{sid}, e…...

【OJ比赛日历】快周末了,不来一场比赛吗? #03.04-03.10 #12场

CompHub 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号同时会推送最新的比赛消息,欢迎关注!更多比赛信息见 CompHub主页 或 点击文末阅读原文以下信息仅供参考,以比赛官网为准目录2023-03-04&…...

C++11:继承

目录 继承的基本概念 继承方式 基类和派生类对象赋值转换/切片 继承中的作用域 派生类的四个成员函数: 构造函数 拷贝构造函数 赋值重载 析构函数 静态成员 继承与友元 多继承 菱形继承 多继承的指针偏移问题 组合 继承的基本概念 继承出现的契机是某一…...

【蓝桥杯试题】递归实现排列型枚举

💃🏼 本人简介:男 👶🏼 年龄:18 🤞 作者:那就叫我亮亮叭 📕 专栏:蓝桥杯试题 文章目录1. 题目描述2. 代码展示法一:dfs法二:next_perm…...

入职字节测试岗外包一个月,我离职了...

有一种打工人的羡慕,叫做“大厂”。真是年少不知大厂香,错把青春插稻秧。但是,在深圳有一群比大厂员工更庞大的群体,他们顶着大厂的“名”,做着大厂的工作,还可以享受大厂的伙食,却没有大厂的“…...

weak学习入门-01

作用:集中在特征提取、算法选择和参数调优上 本篇几乎是汇总了大佬的参考 官网https://www.cs.waikato.ac.nz/ml/weka 大佬的入门教程:初试weka数据挖掘 - 加拿大小哥哥 - 博客园 (cnblogs.com) 参考书:数据挖掘实用机器学习技术(原书第2版)...

线程池中shutdown()和shutdownNow()方法的区别

线程池中shutdown()和shutdownNow()方法的区别 一般情况下,当我们频繁的使用线程的时候,为了节约资源快速响应需求,我们都会考虑使用线程池,线程池使用完毕都会想着关闭,关闭的时候一般情况下会用到shutdown和shutdow…...

高可用/性能

文章目录1.数据库系统架构发展(1)单库架构(2)主备架构(3)主从架构2.主从复制主从同步配置主从复制模式(1)异步复制(2)半同步复制(3)全…...

PriorityQueues优先队列

优先队列优先队列(priority queue)是计算机科学中的一类抽象数据类型。优先队列中的每个元素都有各自的优先级,优先级最高的元素最先得到服务;优先级相同的元素按照其在优先队列中的顺序得到服务。优先队列通常使用“堆”&#xf…...

arm 堆栈

先转一篇 stm32 堆和栈(stm32 Heap & Stack)【worldsing笔记】_stm32堆栈_slj_win的博客-CSDN博客 关于堆和栈已经是程序员的一个月经话题,大部分有是基于os层来聊的。 那么,在赤裸裸的单片机下的堆和栈是什么样的分布呢?以下是网摘&…...

leetcode-面试题 05.02. Binary Number to String LCCI

Description Given a real number between 0 and 1 (e.g., 0.72) that is passed in as a double, print the binary representation. If the number cannot be represented accurately in binary with at most 32 characters, print “ERROR”. Example1: Input: 0.625Outpu…...

C语言函数阐述

C 函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上&#xff0c…...

二叉树——把二叉搜索树转换为累加树

538. 把二叉搜索树转换为累加树 链接 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下&#xf…...

Java使用DFA算法实现敏感词过滤

1 前言敏感词过滤就是你在项目中输入某些字(比如输入xxoo相关的文字时)时要能检测出来,很多项目中都会有一个敏感词管理模块,在敏感词管理模块中你可以加入敏感词,然后根据加入的敏感词去过滤输入内容中的敏感词并进行…...

UG NX二次开发(C#)-外挂 - 配置文件说明(.men文件/.rtb文件/.trb文件)

文章目录 1、前言2、UG NX菜单说明2.1UG NX的Ribbon样式说明2.2 UG NX的Ribbon配置文件3、外挂的加载配置文件说明3.1 创建配置文件夹3.2 填写.men文件3.2 填写.rtb文件3.2 填写.tbr文件4、将外挂加载到UG NX菜单中5、重启UG NX,就可以实现外挂加载了。1、前言 UG NX二次开发…...

Web3中文|日本元宇宙经济“狂飙”

2月27日,三菱、富士通和其它科技公司发布关于建立“日本元宇宙经济区”的协议,表示将联手从角色扮演游戏的角度创建开放的元宇宙基础设施,以推动日本的Web3战略。据了解,日本一直在努力将Web3技术纳入其国家议程,去年1…...

@Autowired和@Resource到底有什么区别

Autowired 和 Resource 都是 Spring/Spring Boot 项目中,用来进行依赖注入的注解。它们都提供了将依赖对象注入到当前对象的功能,但二者却有众多不同,并且这也是常见的面试题之一,所以我们今天就来盘它。 Autowired 和 Resource 的…...

怎样做网站的背景图片/推广引流话术

使用的apache的httpclient的jar包,做的http图片上传,上传时,服务器总返文件格式不对。后来发现,是由于在创建FileBody时,使用了默认的ContentType引起的。所以服务器有判断文件类型的要求的时候,创建FlieBo…...

pb 做网站/seo综合查询接口

一、思考做 iOS 开发时这个功能很常用, 在 OC 和 Swift 中都可以很轻松实现,因为系统本来就提供了用于日志输出的预处理宏,只要我们拿来拼接就可以了,但是在 Dart 中并不提供这些,那有什么办法实现它呢?我们…...

ppt做视频 模板下载网站/足球世界积分榜

总体如下图svn服务器也是程序的开发测试服务器,文件分发服务器从svn服务器上拿到文件然后分发到线上各个web服务器(具体视公司服务器架构而定)。##svn服务器的搭建##在这里模拟开发测试环境(依据实际情况不同)&#xf…...

专门做店铺转让的网站/竞价推广账户竞价托管收费

经过几个实验,我来到了一个令人满意的解决方案,这也保留了顶部可见项目的细滚动位置.事实上,需要保存和恢复三个不同的信息:列表状态(例如哪些组被展开),第一个可视项目的索引以及它的微滚动位置.不幸的是,似乎只有第一个被可扩展列表视图的onSaveInstanceState方法…...

地方门户网站建设要求/网络客服

单元格的高度自适应原理就是通过内部label的高度变化来增加和减少单元格的高度。 - (UILabel *)label { if(_label nil) { _label [[UILabel alloc] init]; [self.contentView addSubview:_label]; _label.numberOfLines 0; [_label mas_makeConstraints:^(MASConstraintMak…...

衍艺武汉网站设计公司/国内网站建设公司

1.项目使用vue-cli vant less axios 开发 2.安装 amfe-flexible ,并在main.js 主入口文件引入 amfe-flexible, 它会自动设置html的font-size为屏幕宽度除以10,也就是1rem等于html根节点的font-size。假如设计稿的宽度是750px,此时1rem应该等于75px。假…...