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放在星号后面。

const方法:通过在方法参数表后面增加关键字const来指定一个方法,它不改变对象的状态。如:int size() const;同时const在方法的实现中也必须出现,即:

int CharStack::size() const{
return count; }

如果一个类使用关键字const来指明参数不能发生改变,其方法不能改变对象的内容,则这个类就称为常量正确的

转载地址:https://blog.csdn.net/m0_45689014/article/details/113874578 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:牛客网 KY117 奥运排序问题
下一篇:牛客网 KY2 成绩排序

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月13日 02时15分43秒