molloc函数动态创建空间new和malloc
创建对象有三种形式:
1.在.data数据区,由系统分配空间;
2.在.stack栈区,由系统分配空间;
3.在.heap堆区,由程序员控制。 在.heap区⽤new动态创建对象。
malloc和new的区别:
2.malloc是⼀个函数,new是⼀个关键字 ;
3.malloc需要给定类型乘以个数,也就是需要给出要开辟空间的⼤⼩,例如malloc ( sizeof ( int ) * n ),⽽ new可以⾃动计算类型⼤⼩,不需要程序员给定。
4.malloc申请完空间后需要进⾏强转,例如(int*)malloc,⽽new不需要强转。
5.malloc申请空间失败时会返回NULL空指针,new申请空间失败时会抛出异常:bad_alloc;
6.malloc 不可以重载 ,⽽new是⼀个运算符,在c++中new可以重载。
new有特殊的⽤法:
1. new以关键字或者说是运算符的⽅式来运⾏,调动规则就是:1)申请空间 2)调动构造函数
Object *p=new Object (10);
delete p;//释放空间
Object *s=(Object*)::operator new(sezeof(object));
::operator delete(s);//释放空间
Object x;//构造函数只能被构造⼀次
new(&x)Object(100);//再次调动构造函数,进⾏创建,修改了x的值
new(q)Object(100);
os->~Object();//释放空间
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论