美文网首页
c 内存分配最佳实践

c 内存分配最佳实践

作者: 行走的程序猿 | 来源:发表于2017-02-04 15:55 被阅读25次
内存分配失败

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

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

一定要赋零值

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

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

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

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

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

有三种情况:

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

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

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

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

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

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

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

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

相关文章

  • c 内存分配最佳实践

    内存分配失败 内存分配可能失败。常用解决办法是,在使用内存之前检查指针是否为NULL。 内存分配成功,但是尚未初始...

  • (二)C语言之动态内存分配

    (二)C语言之动态内存分配 一、静态内存分配 定义是指定分配的内存长度就是静态内存分配,是在栈内存中分配 二、C语...

  • C++ 内存分配和管理

    C++ 内存分配和管理

  • c++内存分配方式

    c++内存分配方式 1.内存分配简单介绍: 一个由C/C++编译的程序占用的内存分为以下几个部分:1、栈区(sta...

  • C++中New关键字和命名空间

    动态内存分配 C++中的动态内存分配C++中通过new关键字进行动态内存申请C++中的动态内存申请是基于类型进行的...

  • 内存管理

    内容包括: C++内存管理 Java内存管理 C++内存管理 内存分配方式 在C++中,内存分成5个区,分别是栈、...

  • malloc、calloc、realloc的区别?

    (1)C语言跟内存分配方式<1>从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序...

  • android 内存泄漏全面解析

    引言: C/C++ 自己去分配内存和释放内存--手动管理 malloc free 什么是内存泄露:内存不在GC掌...

  • C,C++内存分配

    C语言内存分配: 静态内存分配,分配内存大小的是固定,问题:1.很容易超出栈内存的最大值 2.为了防止内存不够用会...

  • C语言中手把手教你动态内存分配

    C语言中手把手教你动态内存分配 动态内存分配 常见的内存分配的错误 先上一个内存分配的思维导图:便于联想想象,理解...

网友评论

      本文标题:c 内存分配最佳实践

      本文链接:https://www.haomeiwen.com/subject/omajittx.html