程序设计C语言(5)

内存管理

  • 引入:内存是分区管理的,分为代码区、静态区、堆区、栈区。
  • 代码区:存放可执行代码,包括函数、常量字符串、
    在这里插入图片描述
  • 静态区:存放全局变量和静态变量,在程序编译时已经分配好,且在运行期间一直存在
  • 栈区:存放函数形参、局部变量、任务切换时的上下文内容 (一般为高地址向低地址存放)
    在这里插入图片描述- 堆区:存放运行时动态分配的内存段,容量远大于栈,低地址向高地址分配。由于每次分配的大小不固定,所以堆内存往往不连续,易造成内存碎片。
  • 内存分配常见错误及对策
    • 内存分配失败,却使用了它——在使用内存之前检查指针是否为NULL或着使用断言
    • 内存分配成功,但没初始化或者误以为内存的默认初值全为0,导致引用初值错误(数组或堆区常见)——必须进行初始化!
    • 内存分配成功且初始化,但是越界——注意边界判断
    • 忘记释放内存,造成内存泄漏——内存资源不断被占用且不被释放,动态分配内存时malloc与free一定要配对
    • 释放掉的内存,仍继续访问——return不能继续返回栈空间、free释放后指针置NULL

程序开发流程

  • 程序开发:指设计、编制、调试程序的方法和过程
    在这里插入图片描述

  • 可行性分析:指通过技术和市场调查等活动,从技术、经济、应用以及法律等方面分析应解决的问题是否有可行的解,从而确定该软件系统是否值得开发。

    • 问题的提出

    • 可行性研究:经济、技术、社会、法律、操作在这里插入图片描述

    • 可行性研究报告

  • 需求分析:通过分析、整理和提炼所收集的用户需求,建立完整的需求分析模型,编写软件需求规格说明书在这里插入图片描述

    • 任务:通过详细调查现实世界要处理的对象,充分里哦阿姐系统工作概况,明确用户的各种需求然后在此基础上确定新系统的功能。
    • 方法:
      • 功能分解法:功能 + 子功能 + 功能接口
      • 结构化分析:数据流 + 数据处理 + 数据存储 + 端点 + 处理说明 + 数据字典
  • 系统设计:根据需求的规格说明,确定软件的体系结构,并为每一个系统模块设计算法、数据结构、接口。

    • 总体设计:概要的回答系统应如何实现,建立初步模型
      • 系统架构设计:根据系统的需求框架,确定系统的基本结构,形成系统架构,以获得有关系统创建的总体方案
      • 软件结构设计:设计组成系统的各个子系统,划分各个子系统的功能模块,形成具有预定功能的模块组成结构,确定模块间的调用关系。
    • 详细设计:完成总体设计的所有设计细节
      • 数据结构设计
      • 算法设计
      • 界面设计
      • 代码设计
      • 输入输出格式设计
  • 代码实现:依照开发规范,将软件设计转换成计算机可以接受的程序

    • 软件编码:设计风格、代码效率、容错机制
    • 单元测试:模块接口、错误处理、边界条件
  • 集成测试:将多个单元组合成模块,多个模块又聚合成分系统或系统

    • 任务:测试软件单元的组合是否能正常工作,以及与其他组的模块能否集成起来工作。最后测试构成系统的所有模块组成能否正常工作。
    • 方法:自底向上测试、自顶向下测试
  • 系统验收:项目收尾,通过验收后,才能进入后续的系统总结、系统维护、系统评价等

    • 内容:系统软件产品、文档、已经完成的交付成果
  • 示例:简易图书管理系统

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值