C++笔记:malloc与new的区别
C/C++:malloc与new的区别
在创建一个自定义类型数据的对象(如结构体、类等),malloc函数只会为其在堆(Heap)中分配内存,返回一个空(void *)指针;而操作符new会为其在自由储存区(Free Store)中分配内存,并调用构造函数为其初始化,并且返回一个相应类型的指针。
代码
#include<iostream> #include<stdlib.h> using namespace std; struct Test { //使用new创建对象时,成员a会被初始化为0 int a = 0; }; int main() { int *a = (int *) malloc(sizeof(int)); int *b = new int; Test *c = (Test *) malloc(sizeof(Test)); Test *d = new Test; cout<< *a<< " "<< *b<< endl; cout<< c->a<< " "<< d->a<< endl; return 0; }