懂c++同志请进。。。
c++ primer p628页的一个程序如下:
class Screen {
public:
void *operator new( size_t );
void operator delete( void *, size_t );
// ...
private:
Screen *next;
static Screen *freeStore;
static const int screenChunk;
};
#include "Screen.h"
#include <cstddef>
// static members are initialized within
// program text files, not header files
Screen *Screen::freeStore = 0;
const int Screen::screenChunk = 24;
void *Screen::operator new( size_t size )
{
Screen *p;
if ( !freeStore ) {
// linked list empty: grab a chunk
// this call is to the global new
size_t chunk = screenChunk * size;
freeStore = p =
reinterpret_cast< Screen* >( new char[ chunk ] );
// now thread the memory allocated
for ( ;
p != &freeStore[ screenChunk - 1 ];
++p )
p->next = p+1;
p->next = 0;
}
p = freeStore; //这两条的意思我有些不太明白,
freeStore = freeStore->next; //哪位同志帮忙注释一下
return p;
}
Here is a possible implementation for the Screen member operator delete():
void Screen::operator delete( void *p, size_t )
{
// insert the "deleted" object back
// into the free list
( static_cast< Screen* >( p ) )->next = freeStore;//还有这个函数要表达的意图
freeStore = static_cast< Screen* >( p ); //也不太清楚,疑惑中!!
}