C语言/动态内存管理函数
创始人
2025-05-28 07:45:55
0

        C程序运行时,内存将被划分为三个区域,而动态开辟的内存区间位于堆区。

文章目录

前言

一、内存划分

二、malloc函数

三、calloc函数

四、realloc函数

五、free函数

总结


前言

在使用C语言编写程序时,使用动态内存是不可避免的,因此了解动态内存管理函数也是必要的。

本文讲了关于动态内存管理的四个函数的使用和注意事项。


一、内存划分

以下为C程序运行时,内存的划分图:

二、malloc函数

该函数为C语言的动态内存开辟函数

void* malloc(size_t size);

注意事项:

  1. 开辟成功,返回一个指针,指向开辟好的空间;
  2. 开辟失败,返回NULL;
  3. 返回类型为void*,使用时需要用户根据需要修改数据类型;
  4. 若size为0,malloc的行为是未定义的,由编译器自己决定

三、calloc函数

该函数为C语言的动态内存分配函数

void* calloc(size_t num, size_t size);

num:元素个数;

size:字节大小。

注意事项:

  1. 开辟成功,返回一个指针,指向开辟好的空间;
  2. 开辟失败,返回NULL;
  3. 返回类型为void*,使用时需要用户根据需要修改数据类型;
  4. 若size为0,calloc的行为是未定义的,由编译器自己决定。

注:

        malloc申请到的空间,没有初始化,直接返回起始地址;

        calloc申请好空间后,会把空间初始化为0,然后返回起始地址。

四、realloc函数

该函数为C语言的对动态开辟内存大小的调整的函数

void* realloc(void* ptr, size_t size);

注意事项:

  1. 指针ptr指向的内存空间后,有足够的空间可以扩容,直接在后边续上新的空间,返回旧的起始地址
  2. 当后边没有足够的空间扩容时,realloc会找一个满足空间大小连续的空间。把旧的空间的数据拷贝新空间的前面的位置,并且把旧的空间释放掉返回新的空间的地址
  3. realloc扩容失败时,返回NULL。

五、free函数

专门做动态内存释放和回收

void free(void* ptr);

注意:

        ptr是指向一片连续堆区的内存空间。


总结

在使用完calloc|malloc|realloc函数之后,一定一定要记得使用free函数释放空间哦~

上述函数说明就是整个动态内存管理函数的全部啦,如果你有兴趣想要深入了解,可以通过写一个动态的通讯录理解它们C_Ccpp/C_study/contact at main · Yjun6/C_Ccpp (github.com)。

相关内容

热门资讯

政策东风激活高原发展“生力军” 前不久,《中华人民共和国民营经济促进法》的颁布,犹如春日暖阳,为民营经济的发展带来蓬勃生机,也向全社...
普陀山树上盘踞长蛇引游客拍照围... 6月6日,浙江舟山,有游客游玩普陀山发现头顶树上盘踞长蛇,引众多游客拍照围观。游客称:“普陀山有各种...
资讯 | 主任大讲堂第三期:律... 在律师的四项基本技能“听说读写”中,写作能力既是律师观点表达的通道,也是律师自我展示的门面。为夯实律...
专业文章丨《刑事诉讼法》第四次... 【珠海律师、珠海法律咨询、珠海律师事务所、京师律所、京师珠海律所】 (本文转载自北京市京师上海律师事...
女子健身房锻炼扭伤腰引发赔偿纠... 近日,朝阳区常营东方华庭社区成功化解一起健身馆锻炼时受伤引发的赔偿纠纷。在社区耐心细致的调解下,消费...
东源县开展《信访工作条例》普法... 近日,东源县信访局联合县委社工部、县委政法委、县司法局、县人社局、仙塘镇人民政府、万达商圈党群服务中...
深圳将调整外地车限行政策 日前,《深圳市提振消费专项行动实施方案》(以下简称《实施方案》)经深圳市委、市政府同意并正式印发,涉...
惠企利民政策|农民进城购房补贴... 策划:金鸿雁;文案:吴利红;AI制作:高翔;记者:吴利红;视频:李巍
诚志股份:子公司诚志永清依照国... 金融界6月9日消息,有投资者在互动平台向诚志股份提问:请问董秘公司因碳五重质烃产品被税务稽查征缴的税...
长亮科技:香港稳定币制度的建立... 每经AI快讯,长亮科技6月9日在互动平台表示,公司拥有稳定币运行、交易、运营的类似场景建设经验与技术...