DaHeiBuHei 2021-06-08 18:22 采纳率: 0%
浏览 10

gcc9 queue swap后内存依然不下降是什么鬼

ubuntu18.04
gcc7.5
同样的代码在vs2019下可以正常回收内存

{
    queue<string> tmp;
    quemsg.swap(tmp);
}

swap后,tmp的生命周期结束了,内存依然不下降

我看别人说gcc都不需要swap,pop后就能自动释放内存,vc++才需要swap,为啥我这会这样呢?求大佬赐教啊

  • 写回答

3条回答 默认 最新

  • 「已注销」 2023-03-17 11:41
    关注

    参考GPT和自己的思路:

    对于这个问题,可能需要深入了解 queue 的内存管理机制。在 gcc 9 中,在 queue 中使用 swap() 理论上应该会释放队列中元素占用的内存空间。但实际上,这种机制可能存在一些异常,导致内存并没有得到及时释放。解决这个问题的方法可以尝试增加代码中的析构函数,手动释放元素占用的内存空间。另外,是否使用 swap() 释放内存可能取决于编译器版本、编译器设置等多种因素。这里可以尝试更换不同版本的编译器,或者调整编译器参数,以便提高程序的内存管理效率和性能。

    评论

报告相同问题?

悬赏问题

  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 被蓝屏搞吐了,有偿求帮解答,Ai回复直接拉黑
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并