malloc和free、new和delete

1、new delete 操作符号 是c++关键字
2、malloc free 函数 c语言
3、new和malloc都是在堆上分配内存

//分配基础类型
int *p=(int *)malloc(sizeof(int));
free(p);

int *d=new int;//同上,从这里可以看出malloc需要计算出字节个数,而new不用计算。
delete d;

int * d2=new int(10);//分配内存同时初始化。
delete p2;

//分配数组类型
int * p2=(int *)malloc(10*sizeof(int));
free(p2);

int * p3=new int[10];
delete [] p3;

//分配对象
//由以上可以看出malloc和free配合使用,new和delete配合使用,那么他们能否混合使用呢?
//malloc--delete  new---free
//在基础类型以及数组类型中都一样,可以混合使用。但是,在对象中不可以,因为malloc不会调用构造函数,而new会调用构造函数。
//其次delete会调用析构函数,free不会调用析构函数

猜你喜欢

转载自blog.csdn.net/Raven_csdn/article/details/88409988