C++中的new/delete和C中的malloc/free相比有什么区别?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26822029/article/details/81214727

malloc和free,是C语言/C++中的标准库函数,new/delete是C++的运算符。都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,单单使用malloc和free无法满足需求,因为在C++中的new执行的时候,不仅分配了内存空间,还执行了构造函数,同样的delete执行的时候不仅释放了空间还执行了析构函数。由于malloc/free是库函数不是运算符,不在编译器控制范围之内,因此不能把执行构造函数和析构函数的任务加给它们。

库函数和运算符:运算符是语言自身的特性,它有固定的语义,而且编译器也知道意味着什么。就像 +-*/ 一样,由编译器解释语义,生成相应的代码,在C++中new和delete是运算符。而库函数仅仅是函数,理论上,编译器不知道也不关心函数的作用,编译器只保证编译函数

猜你喜欢

转载自blog.csdn.net/qq_26822029/article/details/81214727