C++学习笔记 new与malloc的区别

原创 2015年07月09日 17:44:58

    翻了一下C++课件,发现老师着重讲过new和malloc的区别和联系,反正这种东西面试也愿意问,就在这里记录一下。

    它们都是用来申请空间的,申请的空间在堆中。

    malloc是C语言的标准库函数,对应free()函数。而new是C++中新引入的关键字,是运算符,是语言本身的内容。和delete对应。

    malloc函数返回空指针,而new返回带有类型的指针。所以malloc需要类型转换。例子如下:

                 int* p = new int;

                 int*p = (int)malloc(sizeof(int));

    malloc和free不能激活构造函数和析构函数,也就是说不能为对象申请空间,而new和delete可以。这其实也是C++引入new的原因。 

     注意:释放内存后,应该把原来指向这块内存的指针只想NULL。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++学习笔记15 malloc free 与 new delete的区别

#include #include /* run this program using the console pauser or add your own getch, system("pa...

学习笔记之——new 和malloc 的区别

1. malloc()函数 1.1 malloc的全称是memory allocation,中文叫动态内存分配。 原型:extern void *malloc(unsigned int num_b...

【从C到C++学习笔记】域运算符/new/delete运算符/重载/Name managling/extern "C"/带函数默认值参数

C++学习笔记(五)--头文件的书写,new的四种用法,名称空间的用法

C++ Primer Plus 第九章 内存模型和名称空间 首先要养成良好的写.h文件的习惯 继而关注下new的四种用法以及名称空间的用法...
  • zmdsjtu
  • zmdsjtu
  • 2016年09月03日 12:36
  • 1053

C++学习:malloc/free和new/delete动态内存分配

C++学习:malloc/free和new/delete简介: 在C语言中,内存的申请和释放采用的是malloc/calloc/realloc/free来实现的,而在C++语言中,不仅可以使用以上的...

C++学习:动态内存分配对象的new/delete运算符与函数malloc/free

C++学习:对象的new/delete运算符与函数malloc/free摘要: 在学习java的时候,都是使用new来创建新的对象的,对象的存放在堆里的.而回收是由java虚拟机garbag...

【C++学习】C++中的new VS C语言中的malloc

【C++学习】C++中的new VS C语言中的malloc 作者:gnuhpc  出处:http://www.cnblogs.com/gnuhpc/ 前几天一个朋友去面试百度空...

C++学习笔记之:关于类的一些补充测试(new和new[]/private构造/explicit等)

使用new/delete/new[]/delete[]的原则一般是成对使用,但是如果不成对会有什么结果呢 测试1 #include #include using namespace std; cl...
  • moest
  • moest
  • 2015年05月11日 19:09
  • 162

C++学习笔记之——vector的size和capacity、resize和reserve的区别

在使用STL中的vector时,对于size和capacity、resize和reserve的使用很是模糊。于是这篇博文就诞生了,主要是加深自己的理解和方便日后查阅。 在vector中size()和c...

【从C到C++学习笔记】内敛函数/内敛函数与带参数宏的区别/新的类型转换运算符

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++学习笔记 new与malloc的区别
举报原因:
原因补充:

(最多只允许输入30个字)