动态内存初理解

学习c艹过程中学习了指针我们就提了一下动态内存(不知道其他学校是怎么样的),老师讲了一下也没能理解透彻,看了几篇博客有了以下理解,望大佬批评指正:

像我们开始的一般变量定义,形如:

它们都是在在栈内申请的空间,你是知道你要做一件什么事,知道你要申请空间的大小,再去申请的,我们称之为静态内存开辟。但实际coding时,有很多情况你是不知道需要空间大小的,只有程序运行过程中才知道,此时,静态内存开辟已经无法满足我们的需求了,所以有了我们的动态内存。

下面我们来看两个申请动态空间的常用函数(老师课上提到的,其他要后面慢慢解锁了,呜呜呜)。

  1. malloc与free函数(c语言)

  • malloc()申请动态内存。

  • free()释放动态内存。

  • 都在stdlib.h头文件里。

首先是malloc函数:

举个栗子~:

由malloc函数申请size个byte的空间,然后返回指向这块空间的指针(void*类型),但是如果申请不到空间就返回NULL,如例子中的p就指向申请的内存空间;*p访问该空间。

然后是常和malloc一起用的free函数:

举栗子again~:

free函数可以释放先前malloc所分配的内存,所要释放的内存由指针ptr指向。

我们可以尝试着coding一下了:

  1. new与delete函数(c艹)

  • new申请动态内存。

  • delete释放动态内存。

  • new与delete都是运算符。

先是new:

或者

还是一样的,如果申请成功,返回指定类型内存的地址;如果申请失败,返回NULL指针。

继续举栗子:

接下来是delete:

或者

栗子举高高~:

基本的道理和malloc以及free一样,我们直接coding!

用同样的题目:

除此之外,注意动态空间开辟了多少,避免发生越界的情况,且new与delete也好,malloc()和free()也好,必须一对一对用,光释放或者光申请不释放都是有问题的,new与delete使用格式那里也需要多加注意(已受教训,呜呜呜),其次,不能多重释放(连着释放),否则在第一次释放后,原本的指针就变为野指针了,再次释放,释放野指针,程序会崩溃的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值