紧急求救!使用队列模板,内存使用量不停上升

redjade 2006-04-26 06:22:17
我自己做了个测试程序:

class CTest1
{
public:
CTest1();

virtual ~CTest1();

public:
deque<T1> m_queueT;

void push()
{
T1 t1;
m_queueT.push_back(t1);
};

void pop()
{
if ( m_queueT.size() > 0 )
m_queueT.pop_front();
};

};

还有两个按钮,一个按钮的事件中调用push,另外一个调用pop.

然后我不停的push,再pop,虽然我已经全部pop完了,但是内存占用量总是要比push之前的多。每进行一次这样的操作。内存就往上涨一点。请问这该怎么解决啊??

...全文
141 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Victorianism 2006-04-27
  • 打赏
  • 举报
回复
可能是push速度太快,pop速度又太慢了.我以前就是遇到过这样的问题
wbf420 2006-04-27
  • 打赏
  • 举报
回复
检查一下T1的析构
redjade 2006-04-27
  • 打赏
  • 举报
回复
昨天查了一下,我的程序的确还有别的地方有泄漏。 但是改过之后,使用deque模板仍然会有内存往上升的趋势。 可能还要再跟踪久一点观察一下,是不是会稳定下来,另外我也使用小丑的方式试一下。




redjade 2006-04-27
  • 打赏
  • 举报
回复
用正式的程序运行,大消息量测试,内存一直上升,但是后来停下来我再去看,内存稳定到峰值的一半左右。STL是不是有一套自己的内存管理啊。

另外,调试时,程序退出时调试窗口打印有内存泄漏
redjade 2006-04-27
  • 打赏
  • 举报
回复
T1我定义的就是一个简单的结构
typedef struct{
int f1;
BYTE aData[3000];
}T1;


我又测试了一下,在程序里自动push N个然后pop N个,内存就会有规律的上升下降同样多。




dch4890164 2006-04-26
  • 打赏
  • 举报
回复
我也遇到过相似的问题
我是这样做的
int i = deque.size()
deque.pop_front();
deque.resize(i-1);
内存就没有问题了
好的办法期待中!!
pomelowu 2006-04-26
  • 打赏
  • 举报
回复
pop完了以后调用下m_queue.clear( );试试看。还有你的T1会不会有内存泄漏?

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧