C语言内存动态管理

c语言内存动态管理一般通过malloc,realloc,calloc和free完成的,它们都在stdlib.h库中,使用这些函数必须先包含头文件。这些函数可以让程序员动态的申请释放内存,更高效的利用内存。

#include<stdlib.h>

1.malloc主要用法

void *malloc(size_t size);

(1).参数

malloc有一个参数size,该参数控制malloc申请多大的空间(单位:字节),通常可以与sizeof()一起用。

(2).返回值

如果申请成功malloc会返回申请空间起始位置的地址,但是该指针类型为void*,一般要搭配强制类型转换;如果申请失败则会返回空指针,为了避免野指针,要在检查返回指针是否为空才能用该指针。

#inclide<stdlib.h>//包含头文件
#include<stdio.h>
int main()
{
    int*p=(int*)malloc(sizeof(int)*10);//申请10个int类型大小的空间
//类似于10个int类型数组,只不过存放在堆区
    if(NULL==p)//检验是否申请成功
    {
        printf("malloc wrong");
        return 1;
    }
}

2.calloc用法

void *calloc(size_t num, size_t size);

(1)参数

calloc有两个参数:num和size。num是元素个数,size是每个元素大小。

(2)返回值

同malloc。

总结malloc和calloc用法和效果很相似,区别有两点:1.参数不同。2.realloc申请空间会初始化为0。

3.realloc用法

void *realloc(void* _Block,size_t _Size);

realloc一般是给已有空间扩容的。

(1)参数

realloc有两个参数:第_Block写已有空间起始地址,第_Size写改变后的大小。

(2)返回值

同malloc。

4.free用法

void free(void* ptr);

(1)参数

free有一个参数。ptr即为要释放的空间的起始位置。

(2)返回值

free没有返回值。

注意:

(1)malloc,realloc,calloc都要检查返回值。

(2)realloc前一定要用malloc,realloc申请空间。

  (3)空间用完后一定要释放空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值