内存泄露的根本原因

  前些天浏览网页的时候,电脑突然变的越来越慢。通过查看内存的使用发现,IE浏览器竟然占了500多兆的内存,所以写出来给我们一个提醒吧……

  首先,我们需要对程序的运行做个简单的介绍:我们的程序在运行的时候系统会为我们开辟一个4G的虚拟空间,空间的地址由高到低依次存储为命令行参数,栈,堆,bss,data,Ro-data,text。

  1.命令行参数:我们的程序调试通过之后,在终端中运行时输入的./a.out。

  2.栈:存放局部变量。这里的栈我们需要和我们在adt中所说的stack(栈)不同,这里栈的数据是不需要我们程序员开辟和回收空间的,它是由系统进行统一管理的。当程序员定义一个变量时,系统会根据变量的类型自行开辟空间给变量使用,并在包含并且离它最近的一对大括号运行结束后,系统收回空间。程序员对这块空间没有释放的权限。

  3.堆:存放局部变量。和栈相对的,是由程序员自行管理的。通过malloc和free实现对空间的申请和释放。

  4.bss:存放未初始化的全局和静态变量,并把它初始化为0。

  5.data:存放已初始化的全局和静态变量。

  6.Ro-data:存放常量和字符串,不可被修改。

  7.text:存放代码段。

  我们所说的内存泄露就是由于程序员在程序中只是申请了空间,而没有进行释放,造成了内存的不断占用,直到系统崩溃或者用户结束程序的运行。

 

  综上所述,我们在编写程序的过程中要始终遵循一个原则:谁申请,谁释放;谁打开,谁关闭。

转载于:https://www.cnblogs.com/huoxuhui/archive/2013/02/23/2923468.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值