0
点赞
收藏
分享

微信扫一扫

redis缓存实现分布式锁原理及注意事项(附代码)

以前干嘛去了 04-11 18:30 阅读 0
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会调用构造函数初始化,构析函数清理

举报

相关推荐

0 条评论