一、calloc()

1.原型

        voidcalloc(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.原型

        voidrealloc(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()的用法详解相关推荐

  1. Linux中free函数头文件,Linux C 堆内存管理函数malloc()、calloc()、realloc()、free()详解...

    C 编程中,经常需要操作的内存可分为下面几个类别: 堆栈区(stack):由编译器自动分配与释放,存放函数的参数值,局部变量,临时变量等等,它们获取的方式都是由编译器自动执行的 堆区(heap):一般 ...

  2. realloc重分配内存详解_羽夜水之灵_百度空间

    realloc重分配内存详解_羽夜水之灵_百度空间 realloc重分配内存详解_羽夜水之灵_百度空间 realloc重分配内存详解 最近在写source code时需要在数组的buffer小时重新申 ...

  3. New的返回值和New的(3种)用法详解

    我们知道,使用malloc/calloc等分配内存的函数时,一定要检查其返回值是否为"空指针"(亦即是检查分配内存的操作是否成功),这是良好的编程习惯,也是编写可靠程序所必需的.但 ...

  4. python argv 详解_Python3 sys.argv[ ]用法详解

    sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个"外部"很关键,因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可 ...

  5. oracle中的exists 和 not exists 用法详解

    from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...

  6. ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)

    ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...

  7. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  8. C++中substr()函数用法详解

    C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...

  9. php theme_path,PHP_Yii2主题(Theme)用法详解,本文实例讲述了Yii2主题(Theme) - phpStudy

    Yii2主题(Theme)用法详解 本文实例讲述了Yii2主题(Theme)用法.分享给大家供大家参考,具体如下: 首先看看主要的配置方式: 'components' => [ 'view' = ...

最新文章

  1. 计算机科学和Python编程导论(三) 一些简单的数值程序
  2. Linux系统简介 、 安装Linux系统 、 RHEL6基本操作
  3. 计算机技术在排水领域的应用,浅谈计算机技术在市政给排水中的应用.doc
  4. c语言数组数据用指针查找,c语言数组与指针_指针篇_2011.ppt
  5. java第一章Java语言概述和入门程序
  6. mysql warning 1618_MySQL - 错误1045 - 拒绝访问
  7. 江苏省×××局数据复制软件招标
  8. 三十功名尘与土,八千里路云和月
  9. 转:红帽旗下Linux的版本说明RedHat、CentOS、Fedora、OEL等
  10. 【分享】女生教你怎么追MM--送给没有女朋友的来此灌水的GG们
  11. 弗里德里克·弗朗索瓦·肖邦
  12. SEO站内词库布局与关键词搜索排名秘诀
  13. 苹果切换输入法_使用苹果手机的注意啦!iphone输入法不好用?这些使用技巧教给你...
  14. 用python做一个学生管理系统
  15. tp6 项目的创建与多应用
  16. VISA操作编程资料
  17. win10的计算机服务器,Tomcat服务器怎么在Win10系统上搭建-电脑自学网
  18. iphone php格式视频播放,iPhone能播放什么格式的视频 支持视频格式
  19. 1215. bernoulli
  20. Excel——(分列)实施智能化选择

热门文章

  1. 简易机器人(基于Java)平台
  2. 大数据产业:“数聚”承德“云端”发力
  3. 勒索病毒应急响应指南
  4. 新版傻妞+对接onebot协议+对接青龙+对接芝士保姆教程【2022年4月24更新】
  5. 黄灵 | 敏捷团队的激励手段
  6. 计网-TCP/UDP-TCP
  7. (二.Windows7操作系统基本概念 三.字处理软件Word 2010 四.电子表格系统Excel 2010 五. 演示文稿文件PowerPoint 2010)
  8. PIXI 完整示例-PIXI文档翻译(7)
  9. 全志A40I sdk sys_config.fex使用配置说明
  10. 如何建设数字孪生灌区三维可视化平台