前言:大家好,这里是YY;此篇博客主要是动态内存函数的知识点;包含【free】【malloc】【calloc】【realloc】【柔性数组】
PS:创作不易,每个知识点都有例题或者图帮助理解;如果对你有帮助,希望能够得到您的关注,赞,收藏,谢谢!
include<stdlib.h>
free函数用来释放动态开辟的内存。
使用场景:
int num=10;
int* p=NULL;
free(p);
p=NULL;
这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针


释放动态内存空间后,p还会记得一个地址(野指针)
free(p);
p=NULL;
相当于calloc=malloc+memset


解决方案:使用时也要判断,创建临时指针ptr来判断,如果成功再给p指针


申请内存起始位置是空指针时:等价于malloc
int*p=(int*)realloc(NULL,40);等价于malloc(40)
解决方法:判断指针是否为空


解决方法:把p指针置为NULL,则无影响
在释放时,p指针已经移动,指向的不再是动态内存空间的起始位置

解决方法:

指针会变成野指针,造成非法访问

C99中,结构中的最后一个元素允许是未知大小的数组

有些编译器无法编译时,可以改成:




法二:“单独malloc块空间,在此之上realloc”
