首页 > 系统相关 >【C语言】动态内存管理(上)

【C语言】动态内存管理(上)

时间:2024-10-19 14:21:54浏览次数:11  
标签:malloc 函数 管理 free C语言 动态内存 空间 开辟

本篇博客将讲解以下知识点:
(1)为什么要有动态内存分配

(2)malloc和free

1、为什么要有动态内存分配

我们已经掌握的内存开辟方式有:

int val = 40;//向内存中申请4个字节空间存储val
char arr[10];//向内存申请10个字节空间
 

上述的开辟空间的方式有两个特点:
(1)空间的开辟大小是固定的,一旦申请好空间,大小就无法调整。

(2)数字在声明的时候,必须指定数组的长度,数组空间一旦确定了,大小不能调整。

C语言中引入了动态内存开辟,让程序员自己可以申请和释放空间。

2、malloc和free

(1)malloc

注意:使用malloc函数时要包含头文件:stdlib.h

C语言提供了一个动态内存开辟的函数:

void*       malloc( size_t   size)

size的单位是字节,malloc(50)意思是向内存申请50个字节的空间。

注意:这个函数向内存申请一块连续可用的空间,并返回指向这块空间的起始地址。

1))如果开辟成功,则返回一个指向开辟好的空间的起始地址。

2))如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。

3))返回值的类型是void*,所以malloc函数并不知道开辟空间的类型,具体在使用的时候有使用者自己来决定。

4))如果参数size_t为0,malloc的行为是标准未定义的,取决于编译器。

内存分配:

栈区中存储:局部变量、形式参数

堆区中存储:malloc、free、realloc、calloc

静态区中存储:静态变量、全局变量

示例:


 

(2)free

注意:使用free函数时,要包含头文件:stdlib.h

C语言提供了一个函数free,专门用来做动态内存的释放和回收。

函数原型:

void*     free(void*    ptr)

注意:ptr是要释放空间的起始地址。

free函数用来释放动态开辟的内存。

1))如果参数ptr指的空间不是动态开辟的,则free函数的行为是未定义的

2))如果参数ptr是NULL指针,则free函数什么也不做。

malloc函数和free函数都声明在:stdlib.h头文件中。

标签:malloc,函数,管理,free,C语言,动态内存,空间,开辟
From: https://blog.csdn.net/hefaxiang/article/details/142923950

相关文章

  • 计算机毕业设计 宠物管理系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告
    ......
  • 【C语言】strncat、strncmp、strstr函数讲解
    本篇博客将讲解函数:strncat、strncmp、strstr函数注意:使用strncat、strncmp、strstr函数时要包含头文件:string.h1、strncat函数的使用(是从目标空间中第一个的‘\0’位置开始追加的)strncat函数原型: char*   strncat(char*destination,  const char* sourc......
  • 生产管理系统(MES)(源码+文档+部署+讲解)
    生产管理系统、智造流程管理系统、精益生产优化系统、工业生产控制平台、制造执行管理系统、生产自动化监控系统、企业资源规划系统、智能排程管理系统、生产数据采集系统、工艺流程优化系统、质量控制与追溯系统、生产效率分析系统、供应链协同管理系统、智能仓储物流系统......
  • 基于Node.js+vue化妆品配方及工艺管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于化妆品配方及工艺管理系统的研究,现有研究主要以化妆品的成分分析或单一功能模块(如配方设计)为主1,专门针对配方及工艺管理系统,整合用户、化妆品信息、......
  • 基于Node.js+vue翰明教育教学管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于教育教学管理系统的研究,现有研究主要以通用型的管理系统为主,专门针对翰明教育教学管理系统这种特定情境下的研究较少。在国内外,教育教学管理系统已......
  • 软件配置管理活动在 GJB 5000B 评价中的应用
    1 组织机构、角色及职责依据体系要求文件建立两级配置控制委员会:公司配置控制委员会(公司级CCB)和项目配置控制委员会(项目级CCB)。配置管理组为项目级管理配置组(项目级CM)。公司级CCB负责审批产品库的配置项出入库及配置项的Ⅰ类变更。项目级CCB负责审批软件基线建立、受控......
  • jsp高校毕业生论文管理系统v3w2a
    jsp高校毕业生论文管理系统v3w2a本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能学生,院系管理员,论文信息,论文类型,论文成绩,下载记录,普通用户,院系名称,专业开题报告内容一、项目背景与意义在......
  • jsp高等学校体育场馆设施管理系统6r24x
    jsp高等学校体育场馆设施管理系统6r24x本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能教师,体育场馆,运动器材,教学计划,场馆预约,器材借用,器材归还,预约取消技术要求:   开发语言:JSP前端使......
  • 【MySQL数据库】MySQL日志管理与备份恢复
    文章目录MySQL日志1.错误日志(ErrorLog)2.通用查询日志(GeneralQueryLog)3.二进制日志(BinaryLog,Binlog)4.慢查询日志(SlowQueryLog)注意重启MySQL服务动态修改配置MySQL日志相关查询指令1.登录MySQL2.查看通用查询日志是否开启3.查看二进制日志是否开启4.查......
  • 用户与磁盘管理
    用户管理查看用户信息命令功能cat/etc/passwd查看用户信息1).用户信息组成:用户名:密码:UID:GID:用户描述:用户家目录:分配的shell例:root:x:0:0:root:/root:/bin/bash2).x代表密码存放于/etc/shadow,*代表账户被锁定3).UID:用户的唯一标识号4).GID:用户所在组的ID,如果......