动态内存管理

简介: 动态内存管理

57da96d7b4914c54b3dd250f339b4647.png

7b80e4493ce64a0183b6e74f010525cb.png

一、函数malloc(开辟动态内存空间)


void* malloc (size_t size)


头文件 #include<stdlib.h>


(1)若开辟失败会返回一个空指针。


(2)如果我们不释放:当程序结束,该内存空间会被系统自动回收。


                                     当程序不结束,动态内存是不会自动回收的,就会造成内存泄漏的问题。


(3)申请的空间不会初始化。


二、函数free(释放动态开辟的内存空间)


void free (viod*memblock)


头文件 #include<stdlib.h>


(1)一般释放完的空间应该给它赋值为NULL。


(2)如果memblock为空指针,则函数什么事都不做。


(3)必须从开辟动态内存的起始位置释放。


三、函数calloc(开辟动态内存空间)


void *calloc(size_num,size_size)


头文件 #include<stdlib.h>


num为申请size类型的个数,size为申请类型。


(1)申请的空间会被初始化为0。


四、函数realloc(扩容空间)


void *realloc(void * ptr,size_size)


头文件 #include<stdlib.h>


ptr为要调整的内存地址,size为调整之后新大小。返回值为调整之后的内存起始位置。


(1)如果扩容失败返回一个空指针。


(2)在扩容时若原空间无法扩容到目标空间,则会找到一块新的足够大的空间,并且会把原来大小内存空间中的内容复制到新空间中,并返回新的空间地址指针。还会把原空间free掉。



目录
打赏
0
0
0
0
42
分享
相关文章
【c++】动态内存管理
本文介绍了C++中动态内存管理的新方式——`new`和`delete`操作符,详细探讨了它们的使用方法及与C语言中`malloc`/`free`的区别。文章首先回顾了C语言中的动态内存管理,接着通过代码实例展示了`new`和`delete`的基本用法,包括对内置类型和自定义类型的动态内存分配与释放。此外,文章还深入解析了`operator new`和`operator delete`的底层实现,以及定位new表达式的应用,最后总结了`malloc`/`free`与`new`/`delete`的主要差异。
68 3
动态内存管理(2)
动态内存管理(2)
53 1
动态内存管理(下)
动态内存管理(下)
64 0
动态内存管理(下)
动态内存管理(下)
44 0