c语言new函数动态分配内存吗,与c语言的动态分配内存函数相比c++的new和delete运算符的优点是什么...

9c5f44b15d52e59b53b6771ba57169fb.png

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++中动态内存的分配和释放都是由指针来完成。

这些都是很基础的问题,楼主该好好补补了......

◆◆

评论读取中....

请登录后再发表评论!

◆◆

修改失败,请稍后尝试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值