动态内存管理
1.动态内存的开辟
在堆区开辟空间
void* malloc (size_t size);
返回指针,指向空间的首字节,类型不确定,自己强制转换
申请失败时,返回空指针
malloc
calloc
2.动态内存的释放
free
内存泄漏:一直占用,没有还,但是又没有在使用这块空间,那么那块空间就泄露了
注意:free是释放动态内存开辟的空间
3.改变内存的大小
realloc
改变内存空间大小时,有以下两种情况:
-
如果扩容,后面的空间充足时,直接在后面的空间开辟空间
-
后面的空间不够时,在内存中找符合大小要求的空间开辟,把原来的内容拷贝后,原来的空间释放
特例
以下情况两个作用相同