读书人

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

发布时间: 2012-06-12 14:21:25 作者: rapoo

关于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查看

读书人网 >C++

热点推荐