动态内存分配相关的4个函数: malloc calloc realloc free


一、malloc()
参数:分配的字节数
引用<stdlib.h>头文件
返回一个指针,若内存不足,返回一个空指针。

1、函数原型及说明:

void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。

关于分配失败的原因,应该有多种,比如说空间不足就是一种。

void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。

2、函数的用法:

     其实这两个函数用起来倒不是很难,也就是malloc()之后觉得用够了就甩了它把它给free()了,举个简单例子:


        char *Ptr = (char *)malloc(100 * sizeof(char));
3、申请的内存在堆中。
栈空间:1M,大小可设置,用来存放局部变量。
堆空间:>1.2G,用来申请动态内存,不同的OS有差异。

二:calloc()
将申请的元素初始化为0,需要两个参数。
(1)num。申请的个数
(2)size。每一个的大小,eg int型4个字节。

三:realloc
两个参数:
(1)memblock:p以前指定的内存块,咏鹅安以后释放掉p
(2)size:新的大小(字节为单位)。

四:free()//释放内存函数
有一个第三方工具可以提醒内存泄漏:需要添加<vld.h>头文件
free函数引起程序崩溃的原因:
(1)越界:将内存碎片尾部信息遮盖
(2)free(p1);但是p1的头信息改变,即移动了指针方向。
(3)重复释放
(4)free的不是动态内存

猜你喜欢

转载自blog.csdn.net/zDavid_2018/article/details/81154811