malloc/free是C/C标准库函数,new/de
malloc/free 是 C/C 标准库函数,new/delete 是 C++ 运算符。它们都可以用于动态申请和释放内存。
对于内置类型数据而言,malloc 和 new 没有太大区别,主要区别在于:
malloc 申请内存的时候要指定分配内存的字节数,而且不会做初始化;
new 申请的时候有默认的初始化,同时可以指定初始化。
但对于类类型的对象而言,用 malloc/free 通常是无法满足要求的。
因为对象在创建的时候要自动执行构造函数,消亡之前要调用析构函数。比如下面这个例子。
可以看出,在使用 new/delete 会自动调用类的构造函数和析构函数。
由于 malloc/free 是库函数而不是运算符,不在编译器控制之内,不能把执行构造函数和析构函数的任务强加给它,因此,C++还需要 new/delete。
本文由搜财资讯网发布,不代表搜财资讯网立场,转载联系作者QQ 841991949,并注明出处:https://www.ncrw.com.cn/news/keji/34547.html