C++ 动态内存管理
发布日期:2021-07-22 07:29:01
浏览次数:8
分类:技术文章
本文共 988 字,大约阅读时间需要 3 分钟。
一、动态分配与堆
整个内存空间被设置为堆和栈,他们以相反的方向增长
堆:向更高地址增长 栈:向更低地址增长1. new操作符
使用new操作符从堆中分配内存,形式是:取一种类型,并在堆中分配一块空间给所指定的类型变量。
如:int *p = new int;
2. 动态数组
如:double *array = new double[3];
3.动态对象
new 可以用于在堆上分配对象和结构体,如:Student *rp = new Student;
或提供参数,自动调用构造函数:Student *rp = new Student;
二、释放内存
1.delete 操作符
对于int *p = new int;
采用delete p;
double *array = new double[3];
采用 delete[] array;
释放链表需要对每个存储单元进行迭代如: while(list!=null){ Tower * next = list->link; delete list; list = next;}
或:
void freeList(Tower *list){ if(List != NULL){ freeList(list->link); delete list; }}
2.析构函数
当一个类的对象消亡时,析构函数被自动调用,它可以完成各种清理操作,其名字就是在类名前加一个波浪符,析构函数没有返回类型。
三、关键词const的使用
常量引用调用:int strlen(const char *cptr);
const后是类型名,意味着这个cptr是一个指向const char的指针,即它能完全改变strlen函数内的cptr的值,而不改变它所指向的字符串的内容。若想防止改变cptr变量自身的值,则需要将const放在星号后面。
int size() const;
同时const在方法的实现中也必须出现,即: int CharStack::size() const{ return count; }
如果一个类使用关键字const来指明参数不能发生改变,其方法不能改变对象的内容,则这个类就称为常量正确的
转载地址:https://blog.csdn.net/m0_45689014/article/details/113874578 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月13日 02时15分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
你不得不了解的机器学习知识
2019-04-26
你不得不了解的深度学习知识(一)
2019-04-26
你不得不了解的深度学习知识(二)
2019-04-26
AI算法之Encoder-Decoder 和 Seq2Seq
2019-04-26
AI算法之Attention机制
2019-04-26
人体口罩佩戴检测实战
2019-04-26
[实战]200类鸟类细粒度图像分类
2019-04-26
【实战】英文垃圾短信分类
2019-04-26
FFmpeg初遇见_基本命令
2019-04-26
Urbansound8k声音分类深度学习实战
2019-04-26
pytorch版本下的yolov3训练实现火焰检测
2019-04-26
yolov4训练自己的数据集实现安全帽佩戴检测
2019-04-26
EfficientDet训练自己的数据集实现抽烟检测
2019-04-26
【工具篇】10分钟快速上手git与github
2019-04-26
【开发篇】10分钟快速上手spring boot
2019-04-26
【开发篇】10分钟快速spring boot+react前后端分离
2019-04-26
【Leetcode刷题篇】leetcode203 移除链表元素
2019-04-26
【Leetcode刷题篇】leetcode938 二叉搜索树的范围和
2019-04-26
【Java网络编程与IO流】Java中BIO、NIO、AIO的区别是什么?
2019-04-26
【Leetcode刷题篇】leetcode136 只出现一次的数字
2019-04-26