内存分配函数 (calloc、malloc、realloc函数)

函数头文件位置:
#include <stdlib.h>

1、malloc函数
原型:
void *malloc(unsigned int num_bytes)
功能:申请内存空间
参数:
num_byte:申请的空间大小
返回值:
成功:返回分配的空间地址
失败:返回空指针 NULL
例如:
int *p = (int )malloc(20sizeof(int))

2、calloc函数
原型:void *calloc(size_t n, size_t size)
功能:申请内存空间
参数:
n:存储单元数量
size:存储单元的大小(以字节为单位)
返回值:
成功:返回分配的空间地址
失败:返回空指针 NULL
例如:
int *p = (int *)calloc(20, sizeof(int))

注:
malloc申请后空间的值是随机的,并没有进行初始化,而calloc却在申请后,会对空间进行初始化,并设置值为0

3、realloc函数
void *realloc(void *ptr, size_t new_Size)
功能:用于更改已经配置的内存空间
参数:
ptr:指向原来空间基址的指针
new_size:新分配的内存大小,其值可比原内存大或小
返回值:
成功:返回重新分配的空间地址
失败:返回空指针 NULL
注:
1)如果 size 值比原分配的内存空间小,内存内容不会改变(即新内存保持原内存的内容),且返回的指针为原来内存的首地址(即 ptr)。
2)如果 size 值比原分配的内存空间大,则 realloc 不一定会返回原来的指针,原内存的内容保持不变,但新多出的内存则设为初始值。

注:以上三个函数使用完后需要用free 释放,并置为null

4、alloca
原型:void * alloca (size_t size);
功能:是从栈中分配内存空间
参数:分配的空间大小
返回值:
成功:返回首地址
失败:返回NULL

注: alloca 是从栈中分配内存空间,因此它会自动释放内存空间,而无需手动释放。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值