c 内存分配最佳实践

内存分配失败

内存分配可能失败。常用解决办法是,在使用内存之前检查指针是否为NULL。

内存分配成功,但是尚未初始化就引用

一定要赋零值

内存分配成功并且已经初始化,但操作越界

例如在使用数组时经常发生下标“多1”或者“少1”的操作。特别是在for循环语句中,循环次数很容易搞错,导致数组操作越界。

忘记释放内存,造成内存泄露

动态内存的申请与释放必须配对,如果因程序错综复杂而导致难以检查,请尽量重新设计代码结构。

释放了内存却继续使用它。

有三种情况:

(1)程序中的对象调用关系过于复杂,实在难以搞清楚某个对象究竟是否已经释放了内存,此时应该重新设计数据结构,从根本上解决对象管理的混乱局面。

(2)函数的return语句写错了,注意不要返回指向“栈内存”的“指针”或者“引用”,因为该内存在函数体结束时被自动销毁。

(3)使用free或delete释放了内存后,没有将指针设置为NULL。导致产生“野指针”。

内存分配规则
  1. 申请内存之后,应该立即检查指针值是否为NULL,防止使用指针值为NULL的内存。

  2. 为数组和动态内存赋初值,防止将未被初始化的内存作为值使用。

  3. 避免数组或指针的下标越界,特别要当心发生“多1”或者“少1”操作。

  4. 动态内存的申请与释放必须配对,防止内存泄漏。

  5. 释放内存之后,立即将指针设置为NULL,防止产生“野指针”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (JG-2014-08-20)(前半部分经过网上多篇文章对比整理)(后半部分根据ExceptionalCpp、C+...
    JasonGao阅读 5,628评论 2 23
  • 1 文件结构 每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件...
    Mr希灵阅读 2,893评论 0 13
  • 1. C++基础知识点 1.1 有符号类型和无符号类型 当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值...
    Mr希灵阅读 18,040评论 3 82
  • C语言中内存分配 在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是...
    一生信仰阅读 1,198评论 0 2
  • 风儿想必是累了 找寻你那么久了 还是不得 在村头处休息了 终于 风送来了你回家的讯号 你不再和我通话 距离就这样看...
    以梦为马ap阅读 184评论 5 1