C语言的动态内存分配

二.动态内存分配

(1)概念

之前所有的内存都是由系统管理,如果希望更加灵活得管理使用的内存,可以使用动态分配的内存

动态分配的内存由程序员自己管理,自己申请,自己释放

如果没有释放申请的内存就会造成内存泄漏

动态申请的内存在内存中的段落是在堆区

(2)使用

使用动态内存需要一组标准函数,为了使用这些标准函数需要包含stdlib.h头文件

malloc函数可以动态分配连续多个字节的内存空间

参数是希望分配内存的长度(单位是字节)

返回值就是分配的内存的首地址,如果分配失败返回NULL指针

该函数一定要判断返回值

返回指针是void *类型,需要强转后才能使用

malloc函数分配的内存没有初始化

free函数用来释放动态分配的内存

参数就是要释放内存的首地址

free函数不需要知道释放内存的大小

注:一段内存只能释放一次,多次释放会发生严重错误

分配的内存必须释放,如果不释放会造成内存泄漏

注:程序结束后本程序使用的所有内存全部释放

calloc函数可以动态分配连续多个字节的内存空间

calloc函数第一个参数是分配内存单元个数,第二个参数是单个内存单元的大小

calloc分配的内存会被初始化为0

realloc函数用来调整一段已分配空间的大小

第一个参数是要调整的内存首地址(给NULL相当于malloc)

第二个参数是要调整成的大小(给0相当于free)

返回调整后内存的首地址

练习:

由用户输入数字个数和所有数字,计算所有数字的和(使用动态内存)

猜你喜欢

转载自blog.csdn.net/qq_41256954/article/details/88965249
今日推荐