x
x

C语言的那些小秘密之内存分配

发布时间:2016-2-19 09:07    发布者:designapp
关键词: C语言 , 内存分配
  realloc()函数
  原型:extern void *realloc(void *mem_address, unsigned int newsize);
  语法:指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。
  头文件:#include 有些编译器需要#include ,在TC2.0中可以使用alloc.h头文件
  功能:先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。
  返回值:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
  注意:这里原始内存中的数据还是保持不变的。当内存不再使用时,应使用free()函数将内存块释放。
  malloc()函数
  原型:extern void *malloc(unsigned int num_bytes);
  头文件:在TC2.0中可以用malloc.h或 alloc.h (注意:alloc.h 与 malloc.h 的内容是完全一致的),而在Visual C++6.0中可以用malloc.h或者stdlib.h。
  功能:分配长度为num_bytes字节的内存块
  返回值:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。
  说明:关于该函数的原型,在旧的版本中malloc返回的是char型指针,新的ANSIC标准规定,该函数返回为void型指针,因此必要时要进行类型转换。
  calloc()函数
  calloc是一个C语言函数
  功 能: 在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。
  跟malloc的区别:
  calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据。
  用 法: void *calloc(unsigned n,unsigned size);
  头文件:stdlib.h或malloc.h
  #include
  #include
  int main(void)
  {
  int num = 10;
  int i;
  long *p = (long *)malloc(num * sizeof(long));
  long *p1=(long *)calloc(num,sizeof(long));
  for (i = 0; i


  由数据可以很直观的看出他们之间的区别
                               
               
本文地址:https://www.eechina.com/thread-160935-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

  • Microchip视频专区
  • EtherCAT®和Microchip LAN925x从站控制器介绍培训教程
  • MPLAB®模拟设计器——在线电源解决方案,加速设计
  • 让您的模拟设计灵感,化为触手可及的现实
  • 深度体验Microchip自动辅助驾驶应用方案——2025巡展开启报名!
  • 贸泽电子(Mouser)专区
关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表