首页 > 科技 > c++中malloc和new的区别

c++中malloc和new的区别



在c++中,依然支持从c继承过来的malloc和free,但是与new和delete的区别是:malloc是库函数,用malloc申请内存是对库函数的调用,不属于编译器管理的范畴,也就是说编译器无法控制其行为,使用malloc只是单纯的申请一块内存空间,不能调用自定义类型的构造函数。而new却是属于操作符,在编译器管理的范围之内。这样,当申请的内存类型为自定义类型时,如果用malloc申请,则不会执行该类的构造函数,因为构造函数的执行是由编译器执行的,而如果用new进行申请内存,则会执行该类的构造函数。同样free对于析构函数也是一样的。

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/283458.html