c语言-实现动态内存管理的库函数

本文详细介绍了C语言中用于动态内存管理的四个库函数:malloc()用于动态申请内存,free()用于释放内存,calloc()提供预初始化内存,realloc()用于调整已分配内存的大小。作者通过示例展示了它们的用法和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

本篇文章介绍c语言中实现动态内存管理的库函数,比如malloc()、free()、calloc()、realloc()

一、什么是动态内存分配?

在一般情况下,通过以下方式开辟内存空间

	int var = 20;  //在栈空间开辟4个字节的
	char str[10] = {
   0}; //在栈空间开辟10个字节连续的空间

上面开辟空间的方式有两个特点:

  1. 开辟空间的大小是固定的,不可变的
  2. 在栈中开辟,并且在编译时分配空间

当需要在程序运行过程中才能知道所有空间的大小时,这时候就需要动态内存分配。
动态内存分配是指在程序运行过程中,可以动态地向操作系统申请内存空间。
在c语言中,可以借助malloc()、free()、calloc()、realloc()这几个库函数实现动态内存的管理。
在这里插入图片描述


二、malloc()和free()

2.1 malloc()介绍

下面是cplusplus网站关于malloc()函数的介绍,如下:
在这里插入图片描述
作用:申请size个字节内存空间
说明:

  • 申请size个字节的空间
  • 分配的内存空间是没有经过初始化的,存储的是不定值

返回值说明:

  1. 如果传入的参数size为0,返回值为的标准未定义,由实现的编译器决定。
  2. 如果申请成功,返回这块内存空间的起始位置的指针,类型为void*,可以通过强制类型转换为期望解引用的类型
  3. 如果申请失败,返回一个空指针NULL

2.2 malloc()的使用

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<errno.h>
int main()
{
   
	//申请40个字节
	int* p = (int*)malloc(40);

	//判断申请是否成功
	if (NULL == p)
	{
   
		printf("%s", strerror(errno));
		return 1;
	}
	//使用空间
	int i = 0;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值