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