bug fixed 系列之四 : 内存错误分析解决
来源:互联网 发布:星光璀璨海选网络直播 编辑:程序博客网 时间:2024/06/05 00:14
- 本文章为原创,欢迎交流,欢迎转载;转载请勿篡改内容,并且注明出处,谢谢!
本节重点介绍程序中各种内存错误及其原因:
空指针:
空指针一般定义为NULL,即0;现代操作系统都会保留从0开始的一块内存,一旦程序访问了这块内存,系统就会触发一个异常;
问题1:为什么需要保留这样一块内存?
可以判断一个指针的有效性
问题2:为什么不只保留一个字节的内存呢?
一般内存管理都是按页进行管理的,无法单纯保留一个字节,至少保留一页,保留一页也有额外的好处,如检测诸如:
p = NULL; p[1]之类的内存错误
问题3:这块内存有多大?
不同的OS,这块区域大小是不一样的,一般是一页的大小
野指针:
是指已经被释放的内存地址值;
访问已经被释放掉内存,会引发系统异常,一般会导致程序crash;
被释放的内存可以被系统的内存分配器重新分配
内存访问越界:分为读越界和写越界
读越界:
读取不属于自己地址空间的内存,
后果:
若所读的内存地址是无效的,则程序crash;若有效,由于读到的数据具有随机性,会产生不可预
知的后果;
写越界:(又称缓冲区溢出)
写不属于自己地址空间的内存
后果:
可能会破坏别人的内存区域,而且所写入的数据对别人而言是随机的,会产生不可预料的后果
引用未初始化的变量:
使用未初始化的变量,因为这些值是随机的,所以会产生不可预知的后果;
像VC一类的编译器会把它们初始化为固定值,如0XCC.
0 0
- bug fixed 系列之四 : 内存错误分析解决
- bug fixed 系列之三 : 程序运行时相应的内存操作
- bug fixed 系列之二 : 进程内存空间分布情况
- bug fixed 系列之一:前言
- IE6下position:fixed的bug解决
- bug fixed
- java总结系列之四(内存)
- 苹果全系列fixed定位bug检测报告
- 完美解决IE6不支持position:fixed的bug
- 完美解决IE6不支持position:fixed的bug
- 完美解决IE6不支持position:fixed的bug
- 完美解决IE6不支持position:fixed的bug
- 完美解决IE6不支持position:fixed的bug
- 完美解决IE6不支持position:fixed的bug
- 完美解决IE6不支持position:fixed的bug
- 超完美解决ie6不支持position: fixed的bug
- 解决IE6不支持position为fixed的bug
- R语言数据分析系列之四
- 生成图片的三种方式
- 研究浏览器内核相关的标准
- Struts2框架与servlet共存问题
- Spring框架学习【配置数据源三种方式】
- Linux下Hadoop集群配置
- bug fixed 系列之四 : 内存错误分析解决
- DCWriter编辑器配置(BS模式)
- 黑马程序员—反射的机制及应用1
- 分享一个基于ligerui的系统应用案例ligerRM V2(权限管理系统)(提供下载)
- Linux 下配置vim
- birt报表
- android 使用shell command实现对设备控制,实现按坐标点击
- Linux下crontab命令的用法
- Android TextView自动换行文字排版参差不齐的原因