calloc是一个C语言函数   
函数名: calloc   
void *calloc(unsigned n,unsigned size);   
功 能: 在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。   
跟malloc的区别:   
calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据。

C语言函数realloc
函数简介
  原型:extern void *realloc(void *mem_address, unsigned int newsize);   语法:指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。//新的大小一定要大于原来的大小不然的话会导致数据丢失!   头文件:#include <stdlib.h> 有些编译器需要#include <malloc.h>,在TC2.0中可以使用alloc.h头文件   功能:先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。   返回值:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。    注意:这里原始内存中的数据还是保持不变的。当内存不再使用时,应使用free()函数将内存块释放。

realloc使用总结
1. realloc失败的时候,返回NULL   

2. realloc失败的时候,原来的内存不改变,不会释放也不会移动   

3. 假如原来的内存后面还有足够多剩余内存的话,realloc的内存=原来的内存+剩余内存,realloc还是返回原来内存的地址; 假如原来的内存后面没有足够多剩余内存的话,realloc将申请新的内存,然后把原来的内存数据拷贝到新内存里,原来的内存将被free掉,realloc返回新内存的地址   

4. 如果size为0,效果等同于free()。这里需要注意的是只对指针本身进行释放,例如对二维指针**a,对a调用realloc时只会释放一维,使用时谨防内存泄露。   

5. 传递给realloc的指针必须是先前通过malloc(), calloc(), 或realloc()分配的  

6.传递给realloc的指针可以为空,等同于malloc。

最新文章

  1. 安装redis
  2. Linux3.4内核 Yaffs2文件系统的移植
  3. eclipse下部署web工程的两种方式
  4. linux下samba环境搭建
  5. 使用SecureRandom类替代Random类
  6. [android]netd与NetworkManagementService初印象
  7. Sass混合宏、继承、占位符
  8. (原)Ubuntu16中安装cuda toolkit
  9. fullcalendar日历控件集合知识
  10. java 权限 部分截图
  11. MYSQL瓶颈
  12. ios GCD将异步转换为同步
  13. 使用Swoole测试MySQL在特定SQL下的并发性能
  14. is not eligible for getting processed by all BeanPostProcessors
  15. Chrome浏览器,处理input自动填充时带黄色背景色
  16. myEclipse和eclipse从debug视图自动跳回default视图。
  17. 初始IP协议
  18. 【转】Hibernate 配置
  19. OneZero第五周第二次站立会议(2016.4.19)
  20. 讲讲python“=”运算符上的优雅语法

热门文章

  1. C语言printf
  2. 源代码解说ActionBar的各种使用方法
  3. 【微信小程序】:实现轮播图3秒滚动
  4. Swing(Java)--维基百科
  5. Oracle查询结果中:一列中相同的值或一列中重复的值,只显示一次
  6. vi/vim 计算搜寻关键字数量
  7. Wunderlist 云端任务管理(Todo list)工具
  8. web.csproj Compile 下出现两个同名 xxx.cs 项目中出现两个xxx.cs
  9. Shell习题100例(2)
  10. sphinx 配置文件全解析(转)