void* names::operator new(size_t) throw(bad_alloc);
这是个 Exception specification,在函数参数列表后加上throw,throw括号内加上要抛出的异常的类型,这里的这个函数的意思就是它承诺只抛出std::bad_alloc这种异常,如果throw的括号内容为空,则该函数承诺不抛出任何异常。如果函数抛出了它所指定的能抛出的异常之外的类型,则std::unexpected就被调用,unexpected调用std::terminate(),terminate()调用C的abort()函数结束程序,如:
void f1()throw(toobig, toosmall, divzero)
{
......
throw other("This is the penalty!")
}
void f2()throw()
{
throw; // 同上
}
inuse[((char* )p-pool)/sizeof(names)]=false
这句的作用是把其先前标识的可用内存单元重新标识为可用,因为被你分配到的正内存池处于你的使用之中,其他程序无法使用它们,delete的作用是在你不再使用它们之后将其释放,这句和
if(!inuse[p])
{
inuse[p]=true;
return pool+p*sizeof(names);
}
对应。
size_t 是cstddef中unsigned int 的typedef,把它def出来是为了标识经常使用的非负数类型。
释放内存有delete 3这样的句式吗?无论是在C还是在C++中动态内存的分配和释放都是由指针来完成。
这些都是很基础的问题,楼主该好好补补了......
◆◆
评论读取中....
请登录后再发表评论!
◆◆
修改失败,请稍后尝试