C语言 堆空间 C语言中堆空间的生成与释放详解

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

C语言 堆空间 C语言中堆空间的生成与释放详解

  2021-03-21 我要评论
想了解C语言中堆空间的生成与释放详解的相关内容吗,在本文为您仔细讲解C语言 堆空间的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:C语言,堆空间,生成,下面大家一起来学习吧。
堆空间的分配和释放
 #include <stdlib.h>
 malloc、calloc、realloc、free
 malloc
 void *malloc(size_t size);
 功能:在堆中分配 size 字节的连续空间
 参数:size_字节数
 返回值:成功返回分配空间的首地址,失败返回 NULL
 
 free
 void free(void *ptr);
 功能:释放由 malloc、calloc、realloc 分配的空间
 参数:ptr_空间的首地址
 返回值:无
 注意:
 1、每个空间只能释放一次
 2、ptr 必须是分配空间的首地址

 calloc
 void *calloc(size_t nmemb, size_t size);
 功能:在堆中分配 nmemb 块大小为 size 字节的连续空间
 参数:nmemb_数据块数 size_每块大小
 返回值:成功返回分配空间的首地址,失败返回 NULL
 注意:calloc 会把空间内容置 0,而 malloc 不会

 realloc
 void *realloc(void *ptr, size_t size);
 功能:在 malloc、calloc、realloc 分配的 ptr 开始空间,重新分配为 size 字节大小
 参数:ptr_malloc、calloc、realloc 分配空间首地址 size_总大小
 返回值:成功返回分配空间的首地址 失败返回 NULL
 
 注意:
 1、如果 size 小于原空间大小,不会起作用
 2、新增加的空间不会置 0
 3、如果 ptr 为 NULL,相当于 malloc(size)
 4、如果 ptr 不为 NULL 并且 size == 0,相当于 free(ptr)
 5、ptr 不需要释放,如果分配成功,只释放重新分配空间的首地址

猜您喜欢

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们