一、内存分配的方式:

(1)、静态存储区分配。内存在程序编译的时候就已经分配好了,这块内存在程序的整个运行期间都存在。例如全局变量,static变量;

(2)、在栈上创建。在执行函数时,函数内部局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放,栈内存分配运算内置于处理器的指令集中,效率很高,但分配的内存有限;

(3)、堆上分配(动态内存分配)。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。生存期由自己决定,使用非常灵活。

二、常见的内存错误:

(1)、内存分配未成功,却使用了;

(2)、内存分配成功,单位初始化就引用它;

(3)、内存分配成功且已经初始化,但是操作越界;

(4)、忘记释放内存,造成内存泄露;

(5)、释放内存了,继续使用。

三、对策及规则:

(1)、用new或malloc申请内存之后,应立即检查指针值是否为NULL,防止指针值为NULL的内存被使用;

(2)、不要忘记为数组或者动态内存赋初值,防止将为被初始化的内存作为右值使用;

(3)、避免越界,特别当心“多1”或者“少1”操作;

(4)、动态内存的分配和释放必须配对,防止内存泄露;

(5)、使用free或者delete释放了内存之后,立即将指针置NULL,防止产生“野指针”。

备注:整理自《高质量C/C++编程》

转载于:https://blog.51cto.com/green906/1899617

避免内存泄露及内存的规范化使用相关推荐

  1. java 解决内存泄露_Java内存泄露的理解与解决

    Java内存管理机制 在C++语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期.从申请分配.到使用.再到最后的释放.这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记 ...

  2. Java内存泄露和内存溢出、JVM命令行工具、.JDK可视化工具、Java Class文件

    1.Java内存泄露和内存溢出对比 1.1 Java 内存泄露 内存泄露是指一个不再被程序使用的对象或变量还在内存中占用空间. 1.1.1判断内存空间是否符合垃圾回收的标准 在Java语言中,判断一个 ...

  3. Java基础恶补——内存泄露、内存溢出

     Java基础恶补--内存泄露.内存溢出 (2010-09-15 15:56:26) 转载 标签: 杂谈 要点 内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分 ...

  4. Java内存泄露系列--内存泄露的原因及解决方案(大全)

    原文网址:Java内存泄露系列--内存泄露的原因及解决方案(大全)_IT利刃出鞘的博客-CSDN博客 简介 简介 本文介绍Java中内存泄露的一些原因与解决方案. 如果内存泄露的空间足够大,就会导致内 ...

  5. java内存泄露和内存溢出

    内存泄露 是指:对象没有被用到,但是又无法被GC回收就是内存泄露: 分类:经常发生: 发生内存泄露的代码会被多次执行,每次执行,泄露一块内存偶然发生: 在某些特定情况下才会发生一次性: 发生内存泄露的 ...

  6. jvm故障 内存泄露和内存溢出总结

    目录 内存泄漏memory leak 内存泄漏的分类(按发生方式来分类) 内存泄露的场景 静态集合类 / 长生命周期的对象持有短生命周期对象的引用 / 单例模式 /类加载器 各种连接,如数据库连接.网 ...

  7. java什么时候可能产生内存溢出_JAVA内存泄露和内存溢出

    1)概念: 内存溢出:指在指定大小的内存空间,写入了超出大小的数据,从而导致了内存溢出. 内存溢出:指程序运行过程中无法申请到足够的内存而导致的一种错误. 内存溢出通常发生于OLD段或Perm段垃圾回 ...

  8. C/C++什么是内存泄露,内存泄露如何避免?

    C/C++什么是内存泄露,内存泄露如何避免? 1. 内存溢出 2. 内存泄漏 3. 造成内存泄露常见的三种情况 3.1 指针重新赋值 3.2 错误的内存释放 3.3 返回值的不正确处理 4. 如何避免 ...

  9. python会不会出现内存泄露_Python内存泄漏和内存溢出的解决方案

    一.内存泄漏 像Java程序一样,虽然Python本身也有垃圾回收的功能,但是同样也会产生内存泄漏的问题. 对于一个用 python 实现的,长期运行的后台服务进程来说,如果内存持续增长,那么很可能是 ...

  10. linux注入内存泄露,Linux 内存泄露小结

    本文仅限记录自己的一次 内存泄露追踪小记. 可能并不十分适用与大家的情况.而且方法也并不是很smart.仅做记录,能提供个思路更好. 一. 要问调试程序遇到什么问题最头疼, 内存泄露肯定能排在前几名里 ...

最新文章

  1. 深度学习笔记之lSTM网络
  2. 串匹配算法——BF算法
  3. .NET跨平台实践:Linux .Net Core自宿主应用程序瘦身记
  4. python线性输出_Python实现基本线性数据结构
  5. 原型模式(Prototype )
  6. [转载]上善若水,厚德载物
  7. Harmony OS — PageSlider滑动页面
  8. 第六、七章重点知识点总结
  9. 该来的还是要来,数据挖掘
  10. JAVAFX 第三方库 布局 小工具 美化 测试 UI 框架 推荐
  11. HTML+JS好例子集锦
  12. google四件套之Dagger2。从入门到爱不释手,之:Dagger2基础知识及在Java中使用(2)
  13. estore简版商城
  14. 电子设计自动化实验 实验三 频率计制作
  15. 搭建网站基本步骤(搭建一个网站的步骤)
  16. 电脑怎么录制屏幕?教你电脑录屏的方法
  17. HYPERLEDGER FABRIC-CA学习
  18. 创建列表、删除列表、查看列表长度、列表增加一个元素的几种方法
  19. RB女歌手宇西个人单曲《盛宴》上线 诠释独自疗伤的故事
  20. CyanogenMod 官方移植指南

热门文章

  1. 在iphone开发中的get请求和post请求
  2. Ancient Knight(打造Windows Mobile平台最专业的游戏修改器)
  3. 刚开始学习.NET 怎么样能使自己学习的更快点啊?
  4. How to improve software performance with NEON
  5. 算法习题---4-5IP网络(Uva1590)
  6. 机器学习笔记(1)决策树
  7. [技巧心得] 嵌套选择器优先级
  8. SQL读书笔记SQL操作语句
  9. R语言自然语言处理:关键词提取与文本摘要(TextRank)
  10. Egret入门学习日记 --- 第十篇(书中 2.9~2.13节 内容)