目录
序言
malloc
声明
void* malloc (size_t size)
参数
size --- 要开辟的空间大小(单位为字节)
返回值
(1)开辟成功,返回指向这块儿空间的无类型指针。
(2)若开辟的空间太大,堆区剩余空间无法提供这么大空间,那么空间开辟失败,返回NULL。
使用
int*a; a=(int*)malloc(10);
(1)malloc返回类型为无类型,使用时需要强制类型转换。
(2)常与free配套使用。
free
声明
void free (void*memblock)
参数
memblock---指向要释放空间的指针
使用
int main() { int *P; p=(int*)malloc(10); free(p); p=NULL; }
(1)当在堆区申请的动态空间不在使用时,就需要将空间归还给机器,这时候我们就可以借助free函数。
(2)当将p所指向的空间释放后,p就指向一块儿非法空间,这时候就需要,将p指针置为空指针。
calloc
声明
void *calloc(size_t num,size_t size)
参数
num---要开辟的元素个数
size---每个元素占的字节数
返回值
与malloc相同
使用
(1)会将开辟的空间全部初始化为0;
(2)其余用法与malloc相同。
realloc
声明
void*realloc(void*memblock,size_t size)
介绍
realloc用来调整动态开辟内存空间的大小,让动态内存开辟变得更加灵活。
参数
memblock---指向要扩增的空间
size---要扩增的大小
返回值
(1)若原先空间后面有足够内存空间,则realloc直接在他的后面追加空间,返回指向这块儿空间的指针。
(2)若原先空间不够大,realloc则会重新开辟一块儿新的空间,释放原先的空间,返回新空间的地址。
(3)若开辟空间太大,则返回空指针,且原先那块空间不会被释放。