动态内存分配(malloc、free、calloc、realloc)

1. void*   malloc(size_t size);     //size_t   size表示的是内存的总大小

a、malloc所分配的是一块连续的内存,以字节为单位,并且不带任何信息

b、malloc实际分配的内存可能比请求的稍微多一点(什么原因呢?思考一下,我将在下面进行解答)


2.void    free(void*   pointer)

 free用于将动态的内存归还给系统


3.void*   calloc(size_t   num,size_t  size);       //size_t  num代表的是元素的总个数,size_t   size代表元素的数据类型

a、calloc的参数代表所返回内存的类型信息

b、calloc将会返回内存的类型信息


4.void*   realloc(void*   pointer,size_t   new_size);      //pointer代表的是之前申请动态内存的地址,size_t  new_size新申请的内存大小

动态内存重置



总结:

1.动态内存分配是在堆中进行分配

2.malloc用于单纯的从堆中申请固定字节大小的内存

3.calloc能以内存大小为单位申请内存呢并初始化为0

4.realloc用于重置内存大小


关于上面为什么动态内存申请比我们申请的内存要稍微多一点的解答?

由于动态内存的申请是在堆中进行,系统在接受应答指令时,会查找空闲链表节点,

系统会查找与我们申请的内存大小最接近的空闲链表的节点。例如:我们申请的空间

为4个字节,而空闲链表的节点有内存空间为5个字节,还有7个字节的,这时候系统

将会把5个字节的作为我们申请内存的大小。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值