malloc/calloc/reallo作用和区别
Cobb 568 0

realloc工作原理

C语言中开辟动态内存的有三个函数,分别为malloc,calloc,realloc,释放内存的只有一个函数free。

malloc使用的最频繁,因为它最简单,只需要一个参数,即需要动态开辟的内存的字节数,如果堆里的连续空间能满足需要则将分配好的内存首地址返回,否则返回NULL。

calloc只是在malloc的基础上将分配好的每个字节赋值为0,这个功能使用并不多见,但由于callloc需要提供两个参数,相比较而言并没有malloc使用的多。

realloc主要用于需要修改动态内存大小的场景,比如原本开辟了100个字节,现在需要200个字节。

free,用于释放内存,主要注意free可能引发程序崩溃的几个原因,1、越界;2,移动指针的指向,free时指针不指向动态内存的开头;3、重复释放同一段内存;4、释放不是动态创建的内存。

 测试程序是否有内存泄漏推荐使用开源工具vld
评论区