首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于auto_ptr管理内存的有关问题

2012-06-12 
关于auto_ptr管理内存的问题C/C++ code#ifndef QUEUE_H#define QUEUE_Hclass Screen{public:void *operato

关于auto_ptr管理内存的问题

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

C/C++ code
#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);
}

[解决办法]
没错,只要析构函数写好即可。
[解决办法]
测试内存泄漏有函数, _crtmemstate 好像是, 你去MSDN查看

热点排行