关于STL queue内存如何管理如释放怎样处理呢

goodwill223 2014-01-18 02:30:46
如下面例子:
#include<iostream.h>
#include <Windows.h>
#include<queue>
using namespace std;

typedef struct{
int iNum;
char szBuf[1024];
}tBox;

queue<tBox> queTBox;

int iWriteQueue()
{
tBox l_tBox1;
ZeroMemory( &l_tBox1, sizeof(tBox));
l_tBox1.iNum=1;
strcpy(l_tBox1.szBuf,"aaa");
queTBox.push(l_tBox1);
tBox l_tBox2;
ZeroMemory( &l_tBox2, sizeof(tBox));
l_tBox2.iNum=2;
strcpy(l_tBox2.szBuf,"bbb");
queTBox.push(l_tBox2);
tBox l_tBox3;
ZeroMemory( &l_tBox3, sizeof(tBox));
l_tBox3.iNum=3;
strcpy(l_tBox3.szBuf,"bbb");
queTBox.push(l_tBox3);
return 0;
}

int iReadQueue()
{
tBox l_tmpBox;
while(0!=queTBox.size())
{
l_tmpBox=queTBox.front();
cout<<l_tmpBox.iNum<<" "<<l_tmpBox.szBuf<<endl;
queTBox.pop();
}

return 0;
}
void main()
{
iWriteQueue();
iReadQueue();
cout<<queTBox.size()<<endl;

}
当队列不断加入结构体,程序分配内存是一直在增加的吧,而又pop之后内存是不是就自动回收了呢,还是还要在pop方法之后做些后继的处理的,如果要应该怎样处理呢。
还相一个问题:当队列不断加入结构体,程序的分配内存一直继续增大的吧,在这里想问有什么方法或什么策略,可以让内存不要一直往上增加,可以不是取队列的形式,其它什么形式都行,目标就可以在内存中查找得到加入的指定的结构体的
...全文
693 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mujiok2003 2014-01-18
  • 打赏
  • 举报
回复
template <class T, class Container = deque<T> > class queue;
引用
The standard container classes deque and list fulfill these requirements. By default, if no container class is specified for a particular queue class instantiation, the standard container deque is used.
queue是适配容器,看看deque是怎么实现的.

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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