【C++】动态内存管理

本文详细探讨了C++中的动态内存管理,包括new与delete的使用,operator new与operator delete的底层实现,malloc/free与new/delete的区别,类专属的operator new与operator delete重载,异常捕获以及定位new的原理和应用。通过这些内容,帮助读者深入理解C++的动态内存管理机制。
摘要由CSDN通过智能技术生成

1.前言

1.1预备知识

  • 对于进程地址空间有一定的了解
  • 了解C语言的malloc/calloc/realloc/free的用法,功能
    在这里插入图片描述

1.2目录

  • new与delete
  • operator new与operator delete函数(new/delete的底层实现)
  • malloc/free与new/delete的区别
  • operator new与operator delete的类专属重载
  • 异常捕获
  • 定位new

2.new与delete

C++较C语言新增了newdelete两个关键字

newdelete是C++用来帮助用户在堆上动态申请/释放内存操作符不是函数),可以为int,float等内置类型变量申请/释放内存,也可以为这样的自定义类型变量申请/释放内存

我们来看一下new/delete的语法

  1. 动态 申请/释放 1个int(内置类型)的空间
int* ptr = new int;
delete(ptr);
  1. 动态 申请/释放 1个int(内置类型)的空间并初始化为10
int* ptr = new int(10);
delete(ptr);
  1. 动态 申请/释放 5个int(内置类型)的空间
int* ptr = new int[5];
delete[](ptr);

今有一类Date:

class Date{
   
public:
	Date(int year = 0, int month = 1, int day = 1) {
   
		_year = year;
		_month = month;
		_day = day;
		cout << "Construct success" << endl;
	}
	~Date() {
   
		_year = 0;
		_month = 1;
		_day = 1;
		cout << "Destruct success" << endl;
	}
private:
	int _year;
	int _month;
	int _day;
};
  1. 动态 申请/释放 1个Date(自定义类型)的空间
Date* ptr = new Date;
delete(ptr);
  1. 动态 申请/释放 1个Date(自定义类型)的空间并初始化
Date* ptr 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DanteIoVeYou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值