• 0

    消息 标记为已读

    没有消息

    查看全部
  • 登录/注册
  • 我的班级
  • 我有个疑问,不是说尽量少用goto语句,所以为什么不在return之前直接执行kfree()?

    在讲到申请设备号失败时,老师说不能直接return出去,因为程序之前已经执行了led_dev = kmalloc( )。如果直接return出去,系统所分配的空间没有得到释放,而将导致内存泄漏。老师所采用方法是goto到一个标签上,在标签内部执行kfree( )我有个疑问,不是说尽量少用goto语句,所以为什么不在return之前直接执行kfree()?这样既可以释放内存,又可以避免使用goto。

    楼主 zhengzheng 来自 嵌入式-为了代码健全-需要做出错处理 2019-04-25 23:33:25 1人参与讨论

    添加回答

    回答问题最高可获5M豆哦!

    全部回复

    zhengzheng

    没想到在这个视频三分钟后老师就解答了我的疑惑。当申请设备号失败时,我们不仅要是否掉申请失败的设备号,而且还要释放所有在此步骤之前所申请的内存,如果直接在ruturn前写这些释放内存的函数,非常的麻烦。而采用标签的方式,逐级执行,层次分明,而且代码简洁。

    赞同(0) 引用 | 1楼 2019-04-25 回复

    我的回复

    发表成功 M豆+5

    每日可获得50M豆,免费兑换开发板

    点赞

    收藏

    二维码

    扫一扫,在手机上查看!

    所属分类 全部分类

    C语言

    4547人关注

    关注

    C语言是一门通用的,模块化,程序化的编程语言,被广泛应用于操作系统和应用软件的开发。

    Android开发

    2869人关注

    关注

    android开发是指android平台上应用的制作,它包括操作系统、用户界面和应用程序。

    相关课程

    热门问题

    C语言测试题

    18 回答 来自 嵌入式

    FS-MP1A--linnix 编程问题

    16 回答 来自 嵌入式