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

    翻了一下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++,C++,new,malloc)