C/C++的内存管理

栈帧最主要的作用就是存储局部数据

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

C语言动态内存管理 该篇详细的讲述了C语言动态内存管理的使用,不太懂的小伙伴可以去了解一下

 C++中动态内存管理方式

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

new和delete操作内置类型

1. 动态申请单个某类型的空间

语法结构

new 类型
//C++写法
int* p1 = new int; //动态申请一个int类型的空间
delete p1; //销毁

//二者是等价的

//C语言写法
int* p2 = (int*)malloc(sizeof(int)); //动态申请一个int类型的空间
free(p2); //销毁

2. 动态申请多个某类型的空间

语法结构

new 类型[数量]
//C++写法
int* p3 = new int[10]; //动态申请10个int类型的数组
delete[] p3; //销毁

//二者是等价的

//C语言写法
int* p4 = (int*)malloc(sizeof(int)* 10); //动态申请10个int类型的空间
free(p4); //销毁

 3. 动态申请单个某类型的空间并初始化

//C++写法
int* p5 = new int(10); //动态申请一个int类型的空间并初始化为10
delete p5; //销毁

//二者是等价的

//C语言写法
int* p6 = (int*)malloc(sizeof(int)); //动态申请一个int类型的空间并初始化为10
*p6 = 10; //赋值

free(p6); //销毁

 4. 动态申请多个某类型的空间并初始化

//C++写法
int* p7 = new int[10]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; //动态申请10个int类型的空间并初始化为0到9

delete[] p7; //销毁

//二者是等价的

//C语言写法
//动态申请10个int类型的空间并初始化为0到9
int* p8 = (int*)malloc(sizeof(int)* 10); //申请
for (int i = 0; i < 10; i++) //赋值
{
    p8[i] = i;
}

free(p8); //销毁

注意:申请和释放单个元素的空间,使用new和delete操作符;申请和释放连续的空间,使用new[ ]和delete[ ]。

动态申请自定义类型的数据,new和delete会调用构造函数初始化,构析函数清理

相关推荐

  1. linux内存管理

    2024-04-11 18:30:03       29 阅读
  2. C++内存管理

    2024-04-11 18:30:03       30 阅读
  3. C++内存管理模型

    2024-04-11 18:30:03       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-11 18:30:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-11 18:30:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-11 18:30:03       82 阅读
  4. Python语言-面向对象

    2024-04-11 18:30:03       91 阅读

热门阅读

  1. 5.2 SSH和交换机端口安全概述

    2024-04-11 18:30:03       31 阅读
  2. FineBI概述

    2024-04-11 18:30:03       35 阅读
  3. FineBI概述

    2024-04-11 18:30:03       32 阅读
  4. FineBI概述

    2024-04-11 18:30:03       36 阅读
  5. 002 spring ioc(注解)

    2024-04-11 18:30:03       33 阅读
  6. 基于springboot的大创管理系统源码数据库

    2024-04-11 18:30:03       37 阅读
  7. 数据结构5:哈希表

    2024-04-11 18:30:03       35 阅读
  8. 聊聊Redis消息队列stream

    2024-04-11 18:30:03       33 阅读
  9. python爱心代码高级

    2024-04-11 18:30:03       31 阅读
  10. 面试经典150题——移除元素

    2024-04-11 18:30:03       34 阅读
  11. LeetCode -- 第 392 场周赛

    2024-04-11 18:30:03       37 阅读
  12. rollup 插件架构-驱动设计 PluginDriver

    2024-04-11 18:30:03       34 阅读
  13. 中国知网:学术资源的宝库与知识共享的平台

    2024-04-11 18:30:03       39 阅读