关于auto_ptr管理内存的问题

pdaliu 2012-06-11 11:09:28

#ifndef QUEUE_H
#define QUEUE_H
class Screen{
public:
void *operator new(size_t);
private:
Screen *next;
static Screen *freeStore;
static const int screenChunk;
};
#endif


#include <iostream>
#include "model1.h"
#include <cstddef>

Screen *Screen::freeStore=0;
const int Screen::screenChunk=24;

void *Screen::operator new(size_t size)
{
Screen *p;

if( !freeStore ){

size_t chunk=screenChunk *size;
freeStore = p =reinterpret_cast<Screen *>(new char[chunk]);

//把已经分配的内存串连起来
for( ; p != &freeStore[screenChunk-1] ; ++p )
p->next=p+1;
p->next=0;
}
p=freeStore;
freeStore=freeStore->next;
return p;
}

书上说auto_ptr不能管理new分配的数组,不过如果把数组封装成类的话,auto_ptr好像就可以管理了。我这么说没错吧?因为我也什么好方法测内存是不是被自动释放了,我只能写一个死循环,然后在任务管理器里看内存的增长!
auto_ptr<Screen>tem(new Screen);
while(1)
{
tem.reset(new Screen);
}
...全文
73 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
W170532934 2012-06-11
  • 打赏
  • 举报
回复
auto_ptr能智能管理资源的。
csucdl 2012-06-11
  • 打赏
  • 举报
回复
测试内存泄漏有函数, _crtmemstate 好像是, 你去MSDN查看
qq120848369 2012-06-11
  • 打赏
  • 举报
回复
没错,只要析构函数写好即可。
pdaliu 2012-06-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 2 楼 的回复:

测试内存泄漏有函数, _crtmemstate 好像是, 你去MSDN查看

我找了一个叫VLD的库,检测内存泄露满好用的!只能提示~

http://vld.codeplex.com/releases/view/82311
[/Quote]
智能提示~
pdaliu 2012-06-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

测试内存泄漏有函数, _crtmemstate 好像是, 你去MSDN查看
[/Quote]
我找了一个叫VLD的库,检测内存泄露满好用的!只能提示~

http://vld.codeplex.com/releases/view/82311

64,683

社区成员

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

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