C/C++内存管理

1.C语言中动态内存管理方式

C语言中在使用动态内存时主要是使用malloc/calloc/realloc/free,C语言主要会使用这些即可很好的掌握C语言中的内存管理。

2. C++内存管理

C语言的内存管理方式C++中可以继续使用,但在这一门更高级的语言中,有些地方就会用起来很麻烦,因此C++提供了自己的内存管理方式,使用new和delete操作符进行动态的内存管理

2.1 new/delete操作内置类型

new和delete在操作内置类型的时候使用起来较为方便,接下来展示一下C++中new和delete的基本用法。

cpp 复制代码
void test()
{
	//动态申请一个int类型的空间
	int* p1 = new int;
	//动态申请一个4个int类型的空间
	int* p2 = new int[4];
	//动态申请一个int类型的空间并初始化为0
	int* p3 = new int(0);

	delete p1;
	delete[] p2;//释放多个连续空间
	delete p3;
}

注意:单个空间申请和释放的时候,使用new和delete操作符,申请和释放多个进空间的时候要使用new\[\]和delete\[\],new和delete要匹配起来使用

2.2 new和delete操作自定义类型

对于自定义类型来说new和delete相较于malloc等C语言中的函数有哪些优势呢?

在C++中,引入了类和对象的概念,所以需要像new和delete这种可以自行调用类中的构造函数和析构函数,使用方便并且更适配C++。

3.operator new和operator delete函数

new和delete是用户进行动态内存申请和释放的操作符,operatoe new和operator delete是系统提供的全局函数,new和delete在底层调用这两个函数来申请和释放空间。

这两个全局函数底层也是使用的malloc和free来实现申请和释放空间。

相关推荐
j7~28 分钟前
【C++微服务项目开发脚手架】(准备篇)从 0 到跑通:Docker 容器开发环境 + 宿主机用户 + Trae 远程连接 全链路踩坑实战
linux·c++·学习·xshell·docker容器·trae
唠玖馆1 小时前
C++11
c++
邪修king1 小时前
Re:Linux 系统篇(二十九):动静态库Chapter2:动态库深度辨析 —— 核心本质、制作流程、双阶段查找模型与排错指南
android·java·linux·开发语言
泡海椒2 小时前
告别 iText 繁杂配置:jquick-pdf 极简 PDF 生成实战(零基础上手)
java·开发语言·pdf
云泽8083 小时前
从零搭建 WSL2 + Ubuntu C/C++ 开发环境:原理、实践与底层架构解析
linux·c++·windows·ubuntu·wsl2
初願致夕霞9 小时前
C++11:类型推导与完美转发复盘笔记
c++
小猪写代码10 小时前
C++中什么是类,什么是对象
c++
Navigator_Z12 小时前
LeetCode //MySQL - 1251. Average Selling Price
c语言·算法·leetcode
君顾113 小时前
上海24小时自助健身房系统开发实战指南:从架构设计到落地部署
java·开发语言·健身房
Escalating_xu13 小时前
【C语言数据类型和变量·上】从内置类型到变量模型:一次讲透 sizeof、signed/unsigned 与作用域
c语言