当前位置: 首页 > news >正文

C/C++内存管理(1):C/C++内存分布,C++内存管理方式

一、C/C++内存分布

1.1

1.2

二、C++内存管理方式

C++可以通过操作符newdelete进行动态内存管理

2.1 newdelete操作内置类型
int main()
{int* p1 = new int;// 注意区分p2和p3int* p2 = new int(10);// 对*p2进行初始化 10int* p3 = new int[10];// p3 指向一块40个字节的int类型空间int* p4 = new int[10]{ 1, 2, 3 };// 对p4所指空间进行初始化delete p1, p2, p3, p4;// 释放空间return 0;
}

内置类型对象的申请和释放,newdeletemallocfree除使用上,没有任何区别

2.2 操作自定义类型
struct ListNode
{int _val;ListNode* _next;ListNode(int x = 0):_val(x),_next(nullptr){}
};int main()
{ListNode* p1 = new ListNode[3]{ ListNode(1), ListNode(2), ListNode(3) };ListNode* p2 = new ListNode[3]{ 2, 2, 3 };// 与`malloc`相比,`new`可以对自定义类型进行初始化delete p1;delete p2;return 0;
}

在申请和释放自定义类型的空间时,new会调用构造函数,delete会调用析构函数。

http://www.lryc.cn/news/238658.html

相关文章:

  • 11 redis中分布式锁的实现
  • 循环链表3
  • 如何修改百科内容?百度百科内容怎么修改?
  • mysql8.0英文OCP考试第131-140题
  • MySQL数据库——存储过程-条件处理程序(通过SQLSTATE指定具体的状态码,通过SQLSTATE的代码简写方式 NOT FOUND)
  • 信号的处理时机(内核态,用户态,如何/为什么相互转换,内核空间,cpu寄存器),信号的处理流程详细介绍+抽象图解
  • 【JavaEE】Spring的创建和使用(保姆级手把手图解)
  • MyBatis:关联查询
  • 第十二章 控制值的转换
  • SQL并集、交集、差集使用
  • 【双指针】盛水最多的容器
  • win11,引导项管理
  • YoloV8改进策略:WaveletPool解决小目标的混叠问题,提高小目标的检测精度
  • JavaScript中的假值对象是什么?
  • 求二叉树的最大密度(可运行)
  • V100 GPU服务器安装CUDNN教程
  • RT-Thread Hoist_Motor PID
  • css 实现文字流光效果
  • 3D格式转换工具
  • seismicunix基础-声波波动方程推导
  • 2024电脑录屏软件排行第一Camtasia喀秋莎
  • MQTT通信协议使用说明
  • mysql底层是如何存放数据的
  • 【代码随想录】刷题笔记Day33
  • AD从原理图到PCB超详细教程
  • 2023.11.20使用flask做一个简单图片浏览器
  • https和http的区别和优势
  • Docker 启动alpine镜像中可执行程序文件遇到 not found
  • .net对接阿里云CSB服务
  • Json数据格式