内存泄漏和缓冲区溢出

原创 2016年08月30日 09:05:52

所谓内存泄漏(memory leak)一般是指堆内存的泄露,它是由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,造成内存保持占用状态,使操作系统不能将内存分配给其他的程序(进程)。并非指内存在物理上的消失,而是程序分配某段内存之后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露啦。


防止内存泄漏:用类来封装指针部分成员变量和动态创建的代码,这样在析构函数处,回收内存。在构造函数处使用异常捕获,以防止部分成员变量已分配动态内存但对象创建失败而引起内存泄漏。

1:在编写代码时使用智能指针smart point,这是一个实现的类似指针功能的类。主要作用是在使用该smart point时,在构造函数中new一块内存,使用结束时,自动调用析构函数,并在其中delete该内存。

2:比较常用的做法是,在编写代码后使用memory leak 检测工具。

3:尽量在构造函数里分配内存,在外部函数分配的内存,不要在调用函数里面释放,而在外部函数内释放。

4:在基类/继承类各管各的内存。

5:避免‘死循环’


缓冲区溢出:向缓冲区填充的数据位数超过了缓冲区自身的容量限制时,发生的缓冲区溢出覆盖在合法的数据。



c内存系列(一):缓冲区溢出

转自:http://blog.chinaunix.net/uid-20340944-id-1702253.html 在这里强调一下,想完全看的懂这篇文章,至少需要具备一定的汇编语言,C语言和LI...
  • feixiaku
  • feixiaku
  • 2016年04月04日 22:32
  • 314

缓冲区溢出和栈溢出

一.缓冲区溢出   (1)缓冲区溢出是指计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法的数据上,理想的情况是程序检查数据长度并不允许输入的数据超过缓冲区长度的字符,但是绝大多数...
  • leixiaolan
  • leixiaolan
  • 2013年11月25日 14:24
  • 1451

缓冲区溢出详解

缓冲区溢出详解
  • chenglinhust
  • chenglinhust
  • 2014年07月12日 13:30
  • 1990

Linux下缓冲区溢出攻击及Shellcode

4.3.2 Linux32环境下函数的返回地址 编译、链接、执行程序buffer_overflow.c,并关闭Linux的栈保护机制,参见截图: 下面用gdb调试程序: 在foo函数...
  • xumesang
  • xumesang
  • 2015年05月07日 16:41
  • 1575

又一好文章!Shellcode和Linux内的缓冲区溢出攻击

这里讨论基于Linux平台下的缓冲区溢出攻击。在这里我不再论述缓冲区溢出的原理,有许多出版物关于此主题,包括我以前写过的等等。当然,您必需具备的知识是Linux、汇编和C语言以及缓冲区溢出利用,否则(...
  • wuzhiwenk3001
  • wuzhiwenk3001
  • 2012年01月07日 12:15
  • 1209

初步探究缓冲区溢出原理

在计算机内部,输入数据通常被存放在一个临时空间内,这个临时存放的空间就被称为缓冲区,缓冲区的长度事先已经被程序或者操作系统定义好了。向缓冲区内填充数据,如果数据的长度很长,超过了缓冲区本身的容量,那么...
  • xiaoyuai1234
  • xiaoyuai1234
  • 2016年08月06日 08:15
  • 739

缓冲区溢出——初学者必须注意的问题

缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系...
  • sm9sun
  • sm9sun
  • 2016年11月22日 14:42
  • 503

缓冲区溢出——远程代码执行问题

1、 缓冲区溢出——远程代码执行问题 如上图,如果再输入数据时,不加以限制,则会出现,输入的数据覆盖19FEEA之后的区域,当覆盖到19FEEC区域的时候,就会影响到函数的返回执行代码。所以,如...
  • dsb2468
  • dsb2468
  • 2017年06月06日 12:37
  • 213

践踏堆栈-缓冲区溢出漏洞

践踏堆栈-缓冲区溢出漏洞 打算写这篇文章是因为在网上看过一篇论文,讲了缓冲区溢出破坏堆栈来执行恶意程序的漏洞。该论文请见参考资料1。这篇文章会涉及一些汇编的基础知识,以及虚拟内存的一些基本概念等。当然...
  • ssjhust123
  • ssjhust123
  • 2014年06月29日 17:22
  • 2142

安全测试之缓冲区溢出(BO)

一、缓冲区溢出的概念BO的概念很简单,就是你申请了一点内存,而你填入的数据超过了内容的大小,这样你填入的数据就会占用其他的内容,这种情况就是缓冲区溢出。void copy(char* info) { ...
  • quiet_girl
  • quiet_girl
  • 2016年02月02日 15:32
  • 1511
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:内存泄漏和缓冲区溢出
举报原因:
原因补充:

(最多只允许输入30个字)