c语⾔malloc函数的⽤法和意义
当我们需要做⼀个成绩管理系统,⼈数可能为全校学⽣,也可能为⼀个班的学⽣,当我们开辟⼀个班的数组⼤⼩时,如果要存储整个学校的⼈数时,会出现内存不够⽤的情况;当我们开辟全校⼈数⼤⼩的数组时,输⼊⼀个班⼈数的⼤⼩时,会出现内存浪费的情况。
为了应对上述问题,我们引⼊malloc函数。
malloc时动态内存分配函数,⽤于申请⼀块连续的指定⼤⼩的内存块区域以void*类型返回分配的内存区域地址
malloc函数原型
extern void *malloc(unsigned int num_bytes);
意为分配长度为num_bytes字节的内存块
malloc函数头⽂件
#include<malloc.h>
malloc函数返回值
如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
malloc函数使⽤注意事项
malloc函数的返回的是⽆类型指针,在使⽤时⼀定要强制转换为所需要的类型。
**(敲⿊板)重点:在使⽤malloc开辟空间时,使⽤完成⼀定要释放空间,如果不释放会造内存泄漏。
在使⽤malloc函数开辟的空间中,不要进⾏指针的移动,因为⼀旦移动之后可能出现申请的空间和释放空间⼤⼩的不匹配
malloc函数使⽤形式
关于malloc所开辟空间类型:malloc只开辟空间,不进⾏类型检查,只是在使⽤的时候进⾏类型的强转。
举个例⼦:‘我’开辟你所需要⼤⼩的字节⼤⼩空间,⾄于怎么使⽤是你的事
mallo函数返回的实际是⼀个⽆类型指针,必须在其前⾯加上指针类型强制转换才可以使⽤
指针⾃⾝ = (指针类型*)malloc(sizeof(指针类型)*数据数量)
int *p = NULL;
int n = 10;
p = (int *)malloc(sizeof(int)*n);
在使⽤malloc函数之前我们⼀定要计算字节数,malloc开辟的是⽤户所需求的字节数⼤⼩的空间。
如果多次申请空间那么系统是如何做到空间的不重复使⽤呢?
在使⽤malloc开辟⼀段空间之后,系统会在这段空间之前做⼀个标记(0或1),当malloc函数开辟空间如果遇到标记为0就在此开辟,如果为1说明此空间正在被使⽤。
free函数
作⽤:释放malloc(或calloc、realloc)函数给指针变量分配的内存空间。
指针函数的作用注意:使⽤后该指针变量⼀定要重新指向NULL,防⽌悬空指针(失效指针)出现,有效规避错误操作。
int main()
{
int *p = (int *)malloc(sizeof(int));
*p = 100;
free(p);
p = NULL;
return 0;
free函数在释放空间之后,把内存前的标志变为0,且为了防⽌数据泄露,它会把所释放的空间⽤cd进⾏填充。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。