前言:原文本来是想为String实现一个空间配置器的,当我着手写的时候发现,这是一个幼稚的想法,空间配置器在于自己来配置空间,原本的意思也只是学习一下空间配置器的原理,理解了空间配置器的作用就行了。所以,下面我主要讲述空间配置器的源码:
全局allocate、deallocate
template <class T>
inline T* allocate(ptrdiff_t size, T*) {
set_new_handler(0);
T* tmp = (T*)(::operator new((size_t)(size * sizeof(T))));
if (tmp == 0) {
cerr << "out of memory" << endl;
exit(1