calloc()和realloc()的用法详解
一、calloc()
1.原型
void* calloc(size_t nmemb, size_t size);
2.功能
在内存动态存储区中分配nmemb块长度为size字节的连续区域。calloc自动将分配的内存 置0。
3.参数
nmemb:所需内存单元数量
size:每个内存单元的大小(单位:字节)
4.返回值:
成功:分配空间的起始地址
失败:NULL
5.calloc()与malloc()的取别
可以看见malloc()分配的内存空间里为随机数。
calloc()会自动将分配的内存置0,这是与malloc的不同之处。
二、realloc
1.原型
void* realloc(void *ptr, size_t size);
2.功能
重新分配用malloc或者calloc函数在堆中分配内存空间的大小。
realloc不会自动清理增加的内存,需要手动清理,如果指定的地址后面有连续的空间,那么就会在已有地址基础上增加内存,如果指定的地址后面没有空间,那么realloc会重新分配新的连续内存,把旧内存的值拷贝到新内存,同时释放旧内存。
3.参数
ptr:为之前用malloc或者calloc分配的内存地址,如果此参数等于NULL,那么和realloc与malloc功能一致
size:为重新分配内存的大小, 单位:字节
4.返回值
成功:新分配的堆内存地址
失败:NULL
5.举例
现在将原先的10个单元数量增加到11个,发现增加前和增加后的地址一样,这是因为如果指定的地址后面有连续的空间,那么就会在已有地址基础上增加内存。
现在增加到20个,增加前后的地址不一样了,这是因为指定的地址后面没有空间,那么realloc会重新分配新的连续内存,把旧内存的值拷贝到新内存,同时释放旧内存。
现在又有了一个新问题,现在将原先内存中的值拷贝到新的内存,那这个新分配的内存中剩下的十个空间中的值是会给置0,还是随机值呢?
很明显剩下的为随机值,所以如果开辟的比原先的大,后面多出来的空间并不会给置0。
如有错误,希望指正,谢谢!
calloc()和realloc()的用法详解相关推荐
- Linux中free函数头文件,Linux C 堆内存管理函数malloc()、calloc()、realloc()、free()详解...
C 编程中,经常需要操作的内存可分为下面几个类别: 堆栈区(stack):由编译器自动分配与释放,存放函数的参数值,局部变量,临时变量等等,它们获取的方式都是由编译器自动执行的 堆区(heap):一般 ...
- realloc重分配内存详解_羽夜水之灵_百度空间
realloc重分配内存详解_羽夜水之灵_百度空间 realloc重分配内存详解_羽夜水之灵_百度空间 realloc重分配内存详解 最近在写source code时需要在数组的buffer小时重新申 ...
- New的返回值和New的(3种)用法详解
我们知道,使用malloc/calloc等分配内存的函数时,一定要检查其返回值是否为"空指针"(亦即是检查分配内存的操作是否成功),这是良好的编程习惯,也是编写可靠程序所必需的.但 ...
- python argv 详解_Python3 sys.argv[ ]用法详解
sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个"外部"很关键,因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可 ...
- oracle中的exists 和 not exists 用法详解
from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...
- ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...
- python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解
本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...
- C++中substr()函数用法详解
C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...
- php theme_path,PHP_Yii2主题(Theme)用法详解,本文实例讲述了Yii2主题(Theme) - phpStudy
Yii2主题(Theme)用法详解 本文实例讲述了Yii2主题(Theme)用法.分享给大家供大家参考,具体如下: 首先看看主要的配置方式: 'components' => [ 'view' = ...
最新文章
- 计算机科学和Python编程导论(三) 一些简单的数值程序
- Linux系统简介 、 安装Linux系统 、 RHEL6基本操作
- 计算机技术在排水领域的应用,浅谈计算机技术在市政给排水中的应用.doc
- c语言数组数据用指针查找,c语言数组与指针_指针篇_2011.ppt
- java第一章Java语言概述和入门程序
- mysql warning 1618_MySQL - 错误1045 - 拒绝访问
- 江苏省×××局数据复制软件招标
- 三十功名尘与土,八千里路云和月
- 转:红帽旗下Linux的版本说明RedHat、CentOS、Fedora、OEL等
- 【分享】女生教你怎么追MM--送给没有女朋友的来此灌水的GG们
- 弗里德里克·弗朗索瓦·肖邦
- SEO站内词库布局与关键词搜索排名秘诀
- 苹果切换输入法_使用苹果手机的注意啦!iphone输入法不好用?这些使用技巧教给你...
- 用python做一个学生管理系统
- tp6 项目的创建与多应用
- VISA操作编程资料
- win10的计算机服务器,Tomcat服务器怎么在Win10系统上搭建-电脑自学网
- iphone php格式视频播放,iPhone能播放什么格式的视频 支持视频格式
- 1215. bernoulli
- Excel——(分列)实施智能化选择
热门文章
- 简易机器人(基于Java)平台
- 大数据产业:“数聚”承德“云端”发力
- 勒索病毒应急响应指南
- 新版傻妞+对接onebot协议+对接青龙+对接芝士保姆教程【2022年4月24更新】
- 黄灵 | 敏捷团队的激励手段
- 计网-TCP/UDP-TCP
- (二.Windows7操作系统基本概念 三.字处理软件Word 2010 四.电子表格系统Excel 2010 五. 演示文稿文件PowerPoint 2010)
- PIXI 完整示例-PIXI文档翻译(7)
- 全志A40I sdk sys_config.fex使用配置说明
- 如何建设数字孪生灌区三维可视化平台