【C++修炼之路 第三章:内存管理】new & delete、operator new & operator delete

在这里插入图片描述



1、C++内存管理方式

C语言内存管理方式在C++中可以继续使用,但使用起来比较麻烦,因此 C++又提 出了自己的内存管理方式:通过 new 和 delete 操作符进行动态内存管理。

除了用法,和 C语言的 malloc 没什么区别


1.1 内置类型

// 内置类型
// 使用什么类型就 new 什么
int* p1 = new int;
int* p2 = new int[10];  // new 多个

delete p1;
delete[] p2;

1.2 初始化

// 初始化:自己不初始化,数组中默认初始化为 0(和C语言相同),而 new 一个的值是随机值
int* p3 = new int(33);
int* p4 = new int[10] {1, 2, 3, 4};  // new 多个,花括号初始化多个

1.3 自定义类型

// 自定义类型
// 使用 malloc :自定义类型不会初始化
// 使用 free :仅仅释放空间
A* p5 = (A*)malloc(sizeof(A));
free(p5);

// 使用 new :会自动调用默认构造函数(不传参只会调用默认构造)
A* p6 = new A;

// 可以显式调用构造函数:传个参数 12
A* p7 = new A(12);

// 开辟连续的空间会连续调用 构造函数,销毁会连续调用 析构函数
A* p8 = new A[10];

// 给连续的空间赋值:这里涉及隐式类型转换,如将 1 赋值给 第一个A 就是 先 生成临时对象,再拷贝给 第一个A (这一过程常常会被编译器合二为一)
// 单参数
A* p9 = new A[10]{
    1, 2, 3, 4 };
// 多参数
B* p10 = new B[10]{
    {
   1, 2}, {
   2, 3}, {
   3, 4} };
// 单参数和多参数 可以混着用
A* p11 = new A[10]{
    1, 2, {
   4, 5}};



A 和 B 都是 自定义的类

class A{
   
public:
	A(int n = 2)
		:_a(10)
	{
   }
	A(int x, int y)
		:_a(10)
		, _b
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值