1动态分配内存
动态对象的分配与释放需要使用 new 和 delete(memory leak ) 两个表达式来完成。
动态分配的内存的唯一的访问方式是通过指针间接的访问。
1.1类成员的操作符的返回类型是void *类型。并且有一个size_t的类型的参数。
class Screen
{
public:
void *operate new (size_t);
void *operate delete(void *,size_t);
};
//size_被初始化为Screen类的大小
Screen *ps=new Screen(); //分配内存时因为出现内部的new则分配时选择这个成员操作符为对象分配内存。
Screen *ps=:: new Scree(); //显示调用全局的操作符new();
写的代码:
class Screen{
public :
void *operator new (size_t);
void operator delete(void *,size_t);
private :
Screen *next;
static Screen *freeStore;
static const int screenChunk;
};
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;
cout<<freeStore;
}
p=freeStore;
freeStore=freeStore->next;
return p;
}
}
1.2数组的内存分配