目录
目录
1.3new、delete和malloc、free之间的区别(重点)
一.c++动态内存分配回收
1.1分配
1.单个分配
格式:数据类型 *指针名 = new 数据类型
eg: int *p1 = new int;
//在堆区申请了int类型的大小空间,并将该空间的地址赋值给p1
2 连续分配
格式:数据类型 *指针名 = new 数据类型[个数]
eg: int *p2 = new int[5];
//在堆区空间连续申请了5int大小的空间
1.2回收
1. 单个回收
格式: delete 指针名
eg: delete p1;
2 连续回收
格式:delelte []指针名
delete []p2;
1.3new、delete和malloc、free之间的区别(重点)
1> new、delete是关键字,而malloc和free是函数。
2> new申请空间时,可以初始化。而malloc不可以。
3> new申请空间以数据类型为单位,而malloc是以字节为单位。
4> 指针是什么数据类型,new就是申请什么数据类型。而malloc申请空间的返回值是void*,使用是需要强转。
5> new申请空间delete释放空间,区分格式。而malloc和free不区分。
6> new申请类对象空间时,会自动调用构造函数,而malloc不会自动调用。
7> delete释放类对象空间时,会自动调用析构函数,而free不会自动调用。
二.构造函数
2.1功能,格式
1.当实例化一个对象时,给类对象申请空间和初始化使用的。
2.类名(参数列表) { 函数体内容 }
3.调用时机
1> 栈