动态内存分配

动态内存分配与静态的栈内存不同,它在堆上进行,允许程序在运行时根据需要分配和释放内存。传统数组存在长度固定、无法动态扩展、内存自动释放等缺点,而动态内存则提供了更大的灵活性,允许程序员自由控制内存的生命周期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态内存是相对内存而言的,所谓动态和静态就是☞内存的分配方式。动态内存是☞堆上分配的内存,而静态内存是☞在☞在栈上分配的内存。前面所写的程序大多数都在栈上分配的,比如局部变量,形参,函数调用。栈上分配的内存是由系统分配和释放的,空间有限,在复合语句或者函数运行结束后就会被系统自动释放。而堆上分配的内存是由程序通过编程自己动手分配和释放的,空间很大,存储自由。堆和栈后面还会讲。

传统数组的缺点

“传统数组”就是前面所使用的数组,但他是有缺点。当你知道他有什么缺点之后,你就知道为什么需要动态的内存分配了,与动态内存分配相比,传统数组主要有以下几个缺点:
1数组的长度必须事先指定,而且只能是常量,不能是变量,比如像下面就是对的:

int a[5];

2 因为数组长度只能是常量,所以他的长度不能在函数运行的过程当中动态地扩展和缩小。

3 对于数组所占用的内存程序员无法手动释放,只能在函数运行结束后由系统自动释放。也是因为函数运行之后系统为数组分配的内存空间就会被自动释放,所以在一个函数中定义的数组只能该函数运行期间被其他函数使用。而动态内存就不存在这个问题,因为动态内存是由程序员动手编程释放的,所以(ˇˍˇ) 想~什么时候释放,就什么时候释放。只要程序员不手动释放,就算函数运行结束,动态分配的内存空间也不会被释放,其他函数仍可能使用他,除非是整个程序员运行结束后,这个时候系统为该程序分配的所有内存空间都会被释放。

博客
v8worker
05-08 2959
05-06 2942
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值