尽量不要在c++中使用malloc!

尽量不要在c++中使用malloc!

在c语言中,通过malloc函数申请内存空间。在c++中虽然也保留了malloc(),但是应该尽量避免使用。new关键字相比于malloc()的主要好处在于,new关键字不仅分配内存,而且还构造对象。例如下面的代码:

FOO* myFoo {(Foo*)malloc(sizeof(Foo))};  // c语言方式申请Foo类的内存空间
Foo* myFoo2 {new Foo()};                 // c++方式申请Foo类的内存空间

上述代码执行后,两个指针将指向堆空间中保存Foo的位置。也可以通过两个指针访问Foo的数据成员和方法。但是不同之处在于,myFoo指向的Foo对象不是一个正常的对象,因为这个对象未被构造。因为malloc()函数只负责留出一块指定大小的内存,它并不知道或者关心对象本身,只有在分配的空间真正被使用的时候,系统才会真正的分配内存空间。

相反,调用new关键字不仅会分配正确的大小内存,还会调用相应的构造函数以构建对象。类似的差异还在free()和delete运算符上。使用free()时,不会调用对象的析构函数。使用delete关键字的时候,将会调用对象的析构函数清理对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值