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;
}
运行结果


浙公网安备 33010602011771号