最近学完C语言又学C++的,很多知识点都弄混了!C语言中申请动态内存用malloc和free,而C++中使用new和delete,这两者到底有什么区别啊??求大佬能举例说明下

上传的附件
你的回答被采纳后将获得: 10点积分 (将会扣除手续费1点积分。)

keyboard_arrow_left上一篇 : 同步IO和异步IO的区别是什么? 你是通过什么途径知道"WRITE-BUG技术共享平台"的? : 下一篇keyboard_arrow_right

2个回答

Foooooooood
2019-01-08 08:55:33
  • new、delete是C++中的操作符,而malloc和free是标准库函数

  • 对于非内部数据对象来说,只使用malloc是无法完成动态对象要求的,一般在创建对象时需要调用构造函数,对象消亡时,自动的调用析构函数。而malloc free是库函数而不是运算符,不在编译器控制范围之内,不能够自动调用构造函数和析构函数。而NEW在为对象申请分配内存空间时,可以自动调用构造函数,同时也可以完成对对象的初始化。同理,delete也可以自动调用析构函数。而mallloc只是做一件事,只是为变量分配了内存,同理,free也只是释放变量的内存

  • new返回的是指定类型的指针,并且可以自动计算所申请内存的大小。而 malloc需要我们计算申请内存的大小,并且在返回时强行转换为实际类型的指针

Tattoo
2019-11-11 10:08:18

一个是C语言,一个是C++

精彩评论

eject