c语言中malloc和calloc有什么区别,什么是malloc函数

 2023-10-04  阅读 396  评论 0

摘要:今天小编mail为大家分享的生活小常识,希望能够帮助到大家!函数malloc()和calloc()的区别是什么?这个很多人还不知道,现在让我们一起来看看吧!1、函数原型:void* realloc(void* ptr, unsigned n

今天小编mail为大家分享的生活小常识,希望能够帮助到大家!

函数malloc()和calloc()的区别是什么?这个很多人还不知道,现在让我们一起来看看吧!

1、函数原型:void* realloc(void* ptr, unsigned newsize);void* malloc(unsigned size);void* calloc(size_t nelem, size_t elsize);函数声明都在stdlib.h函数库内。

2、 malloc调用形式为(类型*)malloc(size):在内存的动态存储区中分配一块长度为"size"字节的连续区域,返回该区域的首地址。

3、 calloc调用形式为(类型*)calloc(n,size):在内存的动态存储区中分配n块长度为"size"字节的连续区域,返回首地址。

4、 realloc 不能保证重新分配后的内存空间和原来的内存空间指在同一内存地址, 它返回的指针很可能指向一个新的地址。

5、所以,在代码中,必须把realloc返回的值,重新赋给 p 如:p = (char *) realloc (p, old_size + new_size);甚至可以传一个空指针(0)给 realloc ,则此时realloc 作用完全相当于malloc。

6、如:int* p = (char *) realloc (0,old_size + new_size); //全新分配一个内存空间,作用完全等同于以下这行:  int* p = (char *) malloc(old_size + new_size);calloc(len, size)与malloc相似,参数len为申请地址的单位元素长度,size为元素个数,如:char* p;p=(char*)calloc(sizeof(char),1000); 另外:void *alloca(size_t size)函数说明:alloca()用来配置size个字节的内存空间,然而和malloc/ calloc不同的时, alloca()是从堆栈空间(stack)中配置内存,因此在函数返回时会自动释放此空间返回值 :若配置成功则返回一指针, 失败则返回NULL。

Luochuanren.Com洛川人-综合信息门户网站,涵盖生活常识、美食、创业、体育、旅游、家居、汽车、财经、互联网、科技、房产、教育等资讯。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

原文链接:http://www.luochuanren.com/45637.html

发表评论:

管理员

  • 内容137217
  • 积分0
  • 金币0
关于我们
洛川人(luochuanren.com)陕西省洛川宣传信息展示网站,提房产,人才招聘,家居装饰,教育,论坛,贴吧,旅游,特产,二手车,美食,天气,娱乐,企业等资讯。
联系方式
电话:17898872021
地址:
Email:773537036@qq.com
注册登录
注册帐号
登录帐号

Copyright © 2022 洛川人 Inc. 【测试站】 保留所有权利。 Powered by 洛川人

陕ICP备2022013085号

  • 我要关灯
    我要开灯
  • 客户电话

    工作时间:8:00-18:00

    客服电话

    17898872021

    电子邮件

    773537036@qq.com

  • 官方微信

    扫码二维码

    获取最新动态

  • 返回顶部