
【C语言】动态内存管理方式:malloc/calloc/realloc的区别
发布日期:2021-05-10 06:33:22
浏览次数:19
分类:精选文章
本文共 659 字,大约阅读时间需要 2 分钟。
1.相同点
- 都是C语言中用来进行动态内存申请的库函数
- 申请的空间在堆上,用完之后必须使用free来进行释放
- 如果空间申请空间成功,返回空间的首地址,如果申请失败返回的是NULL,因此在使用之前必须要进行判空
- 返回值类型都是void*,在接收返回值时必须进行强转
2.不同点
- void* malloc(size_t size) malloc的参数是用户所申请的字节数,申请空间成功返回空间的首地址,如果申请失败,返回的是空,用户在进行接收时,必须要进行强转,在使用时必须要进行判空,使用完之后必须要借助free释放。
-
void* calloc(size_t num.size_t size)
参数个数不同: num:表示元素的个数 size:表示蛋哥元素所占的字节数 功能的不同:calloc会将其申请的内容空间初始化为0 -
void* realloc(void *p, size_t size)
p==NULL—>该函数的功能与malloc类似—直接申请size个字节返回即可 p!=NULL—>将p指向的空间大小调整到size字节 假设:p指向空间的大小为oldsize字节 size <= oldsize:将p指向的空间缩小,然后返回原空间的首地址即可 size > oldsize:将p指向的空间扩大 (1)大一点点 :realloc(p, 16); 直接在p的基础上进行延伸 (2)大很多:realloc(p, 40) ①申请size个字节的新空间 ②将旧空间中的内容拷贝到新空间 ③释放旧空间,返回新空间的地址
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月25日 17时33分03秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
EasyUI的简单介绍
2019-03-13
初次安装webpack之后,提示安装webpack-cli
2019-03-13
Hbase压力测试
2019-03-14
C#中的类、方法和属性
2019-03-14
Python爬虫训练:爬取酷燃网视频数据
2019-03-14
Python数据分析入门(十九):绘制散点图
2019-03-14
Callable中call方法和Runnable中run方法的区别
2019-03-14
Linux yum提示Loaded plugins错误的解决方法
2019-03-14
xshell解决文本粘贴格式错误
2019-03-14
JAVA BigInteger和BigDecimal类常用方式
2019-03-14
机器学习全教程
2019-03-14
idea在连接mysql数据库时区错误
2019-03-14
工程经济—建设工程定额
2019-03-14
1Z204050、施工质量不合格的处理
2019-03-14
【字节网盘】九款超好看不同页面404源码
2019-03-14
两款404页面自动跳转源码html
2019-03-14
MacOS 应对系统无响应的方法
2019-03-14
Mac隐藏辅助功能|自定义苹果Mac显示器
2019-03-14