使用他们这些函数,记得家#include <stdlin.h>
引入动态内存开辟的目的,让我们灵活的申请和释放空间。
对malloc来说,使用它时会向内存申请一块空间,并且返回指向这块空间的指针。
当然使用它可能会出现失败的情况,如果开辟失败,则会返回一个NULL指针。
对realloc来说对于我们第一次使用malloc或者calloc函数来申请空间后,我们觉得空间不太够用时,我们可以使用realloc函数来进行调整。
这里有几个要注意的点:
ptr是要调整的内存地址,size是调整后大小,返回值为调整之后的内存起始地址。
但要注意的是,realloc在调整内存空间时存在两种情况:
?一种是原来的空间之后有足够大的空间,另一种是没有。
使用realloc函数后的空间后,不应该用原有的地址进行接收,应该进行判断,判断是否申请成功新的空间,如果申请成功,再将申请成功后的地址赋给原来的地址,否则如果申请失败,而且用的是原有的地址接收的开辟空间,则可能会来原来的空间都找不到,从而造成内存泄漏。
?对free来说,它是用来做动态内存的释放和回收的。
如果ptr指向的空间不是动态内存开辟的,那free函数的行为是未定义的。
如果参数ptr是NULL指针,则函数不做任何事情。
使用这些动态内存开辟函数,他们都是在堆上进行的。