C++中,malloc/free和new/delete的区别

来源:互联网 发布:js cookie 编辑:程序博客网 时间:2024/06/06 07:25

首先,malloc和free属于C/C++标准库函数,而new和delete则只是C++提供的操作符而已。

其次,他们在功能上有本质的却别。对于C++中非内部数据类型的创建和释放而言(比如,用户在程序中自定义的数据结构),仅仅使用malloc和free是远远不够的。对象在创建时需要自动执行构造函数,对象消亡时要自动执行析构函数,而malloc和free是C和C++共享的标准库函数(不是操作符,不在编译器的控制范围内),所以不能把执行构造函数和析构函数的功能强加于malloc和free。

因此,C++需要一个能完成动态内存分配和初始化的new,以及一个动态内存释放和完成清理工作的delete。

0 0
原创粉丝点击