访问非法内存区和内存泄漏
在下列程序中,i和*pi都是未初始化的变量,它们的值都是不确定的。而pi指向的是未知位置,不属于程序所拥有的存储单元,该指针变量称为野指针
#include<stdio.h>int main()
{int i,*pi;*pi=5; printf("%d\n",i,*pi);return 0;
}
因此给指针需要赋初值,int *pi=NULL; 等同int *pi=0; #include<stdlib.h>
还有两种情况
1、使用已经释放过后的指针
堆空间用空闲链表法来组织,释放后的地址返回链表中,可能其他函数申请了该地址处的空间。如果写了其他函数使用的空间,可能导致其他程序出错。malloc
2、指针所指向的变量在指针之前被销毁
例如,指针指向了某个函数中的局部变量,当函数返回后,局部变量被销毁,如果栈空间又被使用,再使用该指针可能就会出错。
内存泄漏 (Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
内存泄漏原因通常是new之后没有用delete释放堆上的资源
访问非法内存区和内存泄漏相关推荐
- 堆内存、栈内存、方法区
一.Java内存管理 Java程序运行在虚拟机(JVM)上,JVM相当于Java程序和操作系统之间的桥梁,Java程序通过JVM实现了平台无关性,可以跨平台操作.Java虚拟机在执行Java程序的过程 ...
- 深入理解JVM内存区域与内存分配
前言:这是一篇关于JVM内存区域的文章,由网上一些有关这方面的文章和<深入理解Java虚拟机>整理而来,所以会有些类同的地方,也不能保证我自己写的比其他网上的和书本上的要好,也不可能会这样 ...
- 深入理解JVM之JVM内存区域与内存分配
在学习jvm的内存分配的时候,看到的这篇博客,该博客对jvm的内存分配总结的很好,同时也利用jvm的内存模型解释了java程序中有关参数传递的问题. 博客出处: http://www.cnblogs. ...
- 浅谈C/C+内存管理、内存泄漏、堆栈
1.内存分配区间: 对于一个C语言程序而言,内存空间主要由五个部分组成:代码段(.text).数据段(.data).静态区(.BSS).堆和栈组成. BSS段:BSS段(bss segment)通常是 ...
- 内存泄漏 内存溢出 踩内存 malloc底层实现原理
本文主要对内存泄漏.内存溢出.内存踩踏[踩内存]以及malloc的底层实现原理进行了总结.话不多说,直接往下看: 参考文章: 内存泄漏与内存溢出: https://blog.csdn.net/ruir ...
- java方法区内存泄露_深入理解java虚拟机-第二章:java内存区域与内存泄露异常...
2.1概述: java将内存的管理(主要是回收工作),交由jvm管理,确实很省事,但是一点jvm因内存出现问题,排查起来将会很困难,为了能够成为独当一面的大牛呢,自然要了解vm是怎么去使用内存的. 2 ...
- C++内存管理与内存泄漏及其检测
一.内存错误的分类 a.内存访问错误 对内存进行读或写时发生的错误,可能是读未被初始化的内存单元,也可能是读写错误的内存单元. b.内存使用错误 主要是在动态请求内存之后没有正确释放产生的错误. ...
- 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
- 指令引用的0x0000000内存 不能为written_浅谈虚拟机内存区
1. Java 虚拟机内存区概述 我们在编写程序时,经常会遇到OOM(out of Memory)以及内存泄漏等问题.为了避免出现这些问题,我们首先必须对JVM的内存划分有个具体的认识.JVM将内存主 ...
最新文章
- 用一个例子告诉你gdb调试工具如何使用
- Minimum Integer
- PAT_B_1092_Java(15分)_C++(20分)
- centos java mvn_Linux(centos7)安装JDK1.8与maven
- npm 有用的一些全局包
- 关于 myeclipse 里面没有 add hibernate capabilities 问题解决方法
- 手机远程计算机桌面,win10系统下手机远程连接电脑桌面方法
- 新疆计算机二级vb 试题,2014新疆维吾尔自治区全国计算机等级考试二级VB试题及答案...
- 微信小程序获取服务器当前时间,微信小程序服务器日期格式化问题
- Oracle中国区大裁员:昔日辉煌不再,退出中国市场?
- FFmpeg学习(三)-- libavutil 代码组成
- w10桌面不显示计算机了,win10系统电脑开机后不显示桌面的详细方案
- 【继电器模块的电路设计和分析】
- android apn切换工具,Android修改和添加APN网络
- mysql结算订单表到用户_Luffy之结算订单页面(订单模型表的创建,订单的生成,以及订单详情展示等)...
- 免费的PHP在线解密工具源码
- 微软认知服务的使用 – 漫画翻译
- 美团拍店,一个“顺道”赚钱的小项目,去饭店的路上,饭钱有了
- 消息循环中的TranslateMessage函数和DispatchMessage函数
- 《态度》:年轻人的成长启迪之书