C语言malloc与C++里面new的对比

int *p=new int; //开辟一个存放整型数据的存储空间,同时返回指向一个该空间的地址((int*)型,就是一个指针)
new int (100); //开辟一个存放整型数据的存储空间,同时返回指向一个该空间的地址,并且赋予了该整型数据初值为100

int *p1=new int [100]; //开辟一段存放100个整型数据的存储空间,同时返回指向一个该空间的地址

回收空间:元素和空间的区别
一个元素:delete p;
一个数组:delete [] p1;
p=nullptr;
p1= nullptr;

obj是一个类类型
obj *objects = new obj[100]; // 创建100个动态对象

delete []objects; //释放这一段空间

objects=nullptr; //释放之后不要忘记置空

malloc,free与new,delete的区别
malloc需要自己计算字节数,new会根据类型自动计算字节数
malloc返回一个空指针,需要自己进行类型转换,new 自动匹配指针类型
malloc不会自动调用类的构造函数,new会自动调用类的构造函数;
free一个对象时,不会自动调用类的构造函数,delete一个对象时会自动调用类的析构函数;
(若释放数组时则要添加括号delete[]Arr);

malloc,free是函数,new,delete是运算符;
new和delete:用于元素的申请
new[]和delete[]用于数组的申请;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值