【C语言】动态内存管理

文章前言:

  本文主要介绍C语言中的动态内存管理,主要是4个与之相关的函数。另外,我认为柔性数组也可以归于动态管理中,但其是与结构体密切相关的,建议可以先了解结构体再看柔性数组。

动态内存管理:

为什么会有动态内存管理?

在正式介绍动态内存管理之前,我们应该要先想想为什么需要它?
请看下列代码:

//通讯录
typedef struct person
{
   
	char name[20];
	char sex[5];
	int age;
	char num[15];
	char adrs[30];
}person;

int main()
{
   
    //创立通讯录
    person A[10] = {
   0};
}

联合实际上看有没有看出什么问题?
有,而且是很基础的问题——通讯录里面的可以添加的人物太少了!

但有人会说,那直接在代码里初始化一个比较大的数不就可以解决这个问题了么?
很好,但如果这么想的话,我一旦设为1000,甚至1000000,结果在某一段时间用的不过几十余人而已,那又会造成大量的内存浪费,这产生了一个新问题。

因此,我们的主角——动态内存管理 响亮登场!

动态内存分布:

在前言我已经提到动态内存管理是与四个函数有着密切联系,这四个函数的其中三个可以在堆中创建变量。我先给出“内存图”,看看动态内存管理函数在什么地方上大方异彩。

在这里插入图片描述
上图是C语言的大概内存分布图,可以看见,动态内存是在堆区上开辟的。
在继续往下介绍前,各位可以先简单想想:动态内存的开辟有什么弊端?

malloc():

函数声明&#x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值