浅析C/C++中new和malloc的区别
来源:互联网 发布:python入门经典 下载 编辑:程序博客网 时间:2024/05/24 02:45
1.new是 C++的操作符,而malloc是C语言中的一个函数;所以,new是一个保留字,不需要头文件支持,但是malloc需要<stdlib.h>或<cstdlib>头文件的支持;
2.new建立的是一个对象,malloc则是分配一块内存;new建立的对象可以把它当做一个普通对象,不虚直接访问它的内存地址,而malloc分配的是一块内存区域,需用指针访问;
3. new不止分配内存,还会调用类的构造函数,与delete配合调用,delete会调用类的析构函数;malloc只是分配内存,不会进行初始化工作,与free配合调用,同样,delete也不会调用析构函数;所以new操作相当于malloc操作和调用构造函数的总和。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。如果用free释放“new创建的动态对象”,那么该对象因无法执行析构函数而可能导致程序出错。如果用delete释放“malloc申请的动态内存”,理论上讲程序不会出错,但是该程序的可读性很差。所以new/delete必须配对使用,malloc/free也一样。
4.new指针带有类型信息,而malloc返回的是void类型的指针;
5.内存泄露:new和malloc都可以检查出内存泄露,区别在于new可以指明是哪个文件哪一行的具体位置,但是malloc没有这些详细信息;
- 浅析C/C++中new和malloc的区别
- C/C++中 malloc和new区别
- C/C++中 malloc和new区别
- C/C++中 malloc和new区别
- C中malloc和C++中new的区别
- c++ 中new和c中的malloc的区别
- c/c++中malloc/free和new/delete的区别
- c中malloc与new的区别
- [C++] new 和 malloc 的区别
- [C/C++] malloc/free和new/delete的区别
- 三,C/C++中 malloc和new区别
- C/C++ 中 new/delete 和 malloc/free 区别
- C/C++中new与malloc的区别
- C和C++中的new , malloc 的区别
- C和C++中的new , malloc 的区别
- C++-malloc和new的区别与联系
- C/C++语言中malloc/free和new/delete的区别
- C语言 malloc/free和C++中new/delete的区别
- Java一个简单的web服务器(支持简单的Servlet)
- Android开发者必知的Java知识(一):Java反射机制
- SGU 105 Div 3
- PatchMatch 相关
- My One And Only
- 浅析C/C++中new和malloc的区别
- windows下lammps并行版本的安装
- 分治法(最近点对)——HDU 1007
- CentOS下载及版本选择
- jdk源码之Collection接口
- poj 3630 Phone List
- C语言程序反汇编
- 黑马程序员——java面向对象(三)多态、内部类、包
- 白话经典算法系列之八 MoreWindows白话经典算法之七大排序总结篇