福建省建设厅网站 登录,家装设计软件哪个好用,网页设计制作个人简历代码,风景网站的制作文章目录摘要问题出现原因第一种 请求内存多余系统可提供内存第二种 地址空间过于分散#xff0c;无法满足大块连续内存的请求第三种 堆管理数据结构损坏稍微总结下没想到还能更新参考关键字#xff1a;
std、
bad、
alloc、
OOM、
异常退出摘要
今天又是被BUG统治的一天无法满足大块连续内存的请求第三种 堆管理数据结构损坏稍微总结下没想到还能更新参考关键字
std、
bad、
alloc、
OOM、
异常退出摘要
今天又是被BUG统治的一天刚使用物理方法解决了“QVector isDetached()又来一个”std :: bad_alloc“这个问题更是没法下手。只能摸索尝试仅此记录。
问题出现原因
根据问题名字猜测应该就是内存申请失败造成的。这里引用网友内容 该进程请求的内存多于可以提供的内存地址空间过于分散,无法满足大块连续内存的请求堆管理数据结构已损坏 第一种 请求内存多余系统可提供内存
这里最担心其实就是内存溢出了也就是请求内存多余系统可以提供的内存了我里面有好几个容器如果是申请了没有释放那内存溢出基本是妥妥了吧所以排查代码找到容器new 的地方检查一下。完了在机器上一直监控程序内存运行情况 比较常见的饿解决方法就是在new的地方使用try-catch来解决但是Qt里面会有大量的new操作在 STACK OVERFLOW有一个帖子可以看一下。 所以我没有针对大量的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吧看看具体问题出现在哪里了我这里还用到一个方法就是把代码回滚到上一个版本测试看程序是否崩溃如果不崩溃那就对比下在一个个排查。就这样。
没想到还能更新
今天带逐段代码排查的时候发现这段代码注释掉就不会崩溃至少目前是这样但是呢我有没有发现这段代码哪里有问题。 想着可能是auto 的问题或者迭代器的问题所以我改了一遍代码 目前在跑测试看看结果咋样。
参考
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