malloc函数的学习

来源:互联网 发布:网络监控数据线连接 编辑:程序博客网 时间:2024/06/07 01:23

malloc函数的作用是申请分配一块连续空间。
1.头文件
malloc函数的头文件是< malloc >或者< stdlib.h >或者< alloc.h >(linux)
2.返回值
malloc若申请内存成功则会返回一个指向改该空间首地址的指针,该指针的类型为void(即可以被强制类型转化为需要的类型)。失败则返回一个NULL指针。一般情况下申请内存不会因为内存不足出现失败情况。所以失败一般是因为之前的程序访问越界。
3.使用

char * p;p=(char *)malloc100);

100即为所要申请分配的空间字节长度。
4.空间位置
malloc函数所分配的空间是在堆区,这一点和数组(存储在栈区)不同。
5.动态分配
这应该是malloc最大的特点。下面是代码

int n;int *a=(int *)malloc(sizeof(int)*n);

等价于定义一个a[n]数组。
6.free()
free函数和malloc函数在同一个头文件中。
当使用完分配的空间后,切记要用free()释放该空间。
这时虽然该空间被释放,指向它的指针却没有变,它成为了一个野指针,这是很危险的。所以需要将给该指针赋NULL。
7.与变长数组(VLA)的优劣
优势:
(1)支持广,VLA只支持C99以后的编译器。
(2)可分配大空间(大数组),因为malloc申请的空间在堆区,而VLA存储在栈区,所以用malloc函数可以允许申请很大的空间。
劣势:
(1)访问速度慢,也是因为malloc申请的空间在堆区。
(2)需要与free搭配,稍显繁琐。

原创粉丝点击