C++03:总结

发布时间 2023-08-10 15:57:53作者: 言午丶

malloc和new的区别

malloc和new都是用于动态分配内存的函数

调用方式不同:malloc是C语言标准库中的函数,需要以函数调用形式,并且需要指定要分配的内存大小,而new是C++关键字,无需指定内存大小

内存分配方式不同:malloc只负责分配内存空间,并返回该内存空间的起始地址,但不会进行初始化。而new除了分配内存空间外,还会自动调用构造函数进行对象初始化

返回值类型不同:malloc返回void类型的指针,需要进行强制类型转换才能够使用。而new返回一个指向已分配内存空间的指针,且不需要进行强制类型转换

内存分配失败时处理方式不同:当内存分配失败时,malloc会返回NULL,并需要手动释放已经分配的内存空间。而new会抛出std::badalloc异常,程序可以通过异常捕获机制来处理

 

delete和free区别

delete和free都可以用来释放动态分配的内存

delete是C++中的运算符,而free是C语言中的函数

delete会自动调用对象的析构函数来清理资源,而free只是简单的释放指针所指向的内存块

delete必须要用于new动态分配的内存,而free必须要用于malloc动态分配的内存

C++中应该使用delete来释放内存,而不是free