动态内存
C语言中的动态内存开辟函数有三个:malloc、calloc 和 realloc,有开辟就要有释放,都会使用一个 free 来进行内存释放。
一、malloc
用来在堆区申请一片连续的内存空间
void * malloc(size_t size)
参数:所申请空间的字节数
返回值:成功代表申请空间的首地址,失败返回值为NULL
mallo函数返回的实际是一个无类型指针,必须在其前面加上指针类型强制转换才可以使用
指针自身 = (指针类型*)malloc(sizeof(指针类型)*数据数量)
注意:
1.malloc 申请后要对其返回值进行强制类型转换
二、free
释放一片空间
void free(void *pstr);
参数:malloc成功之后的返回值
返回值:空
注意:使用后该指针变量一定要置为空指针NULL
- 1.free 的对象必须是已申请的堆区空间
- 2.free 完后要对目标指针手动置空
三、realloc
扩容空间
void * realloc(void * ptr, size_t size);
参数1:malloc的返回值(所需扩容空间的首地址)
参数2:扩容之后的总字节数。
返回值:成功扩容之后空间的首地址(可能与之前一样,可能不一样),失败返回值NULL
四、memset
用来重置一片连续的空间(按照字节)
参数1:重置空间的首地址
参数2:重置空间的字符
参数3:重置空间的大小(sizeof测试即可)