APP下载

内存溢位和内存泄漏

消息来源:baojiabao.com 作者: 发布时间:2024-05-04

报价宝综合消息内存溢位和内存泄漏

1、内存溢位(out of memory)

指程式在申请内存时,没有足够的内存空间供其使用。即要求分配的内存超出了系统能够提供的,所以出现out of memory。比如系统只能存放int的空间,而申请了存放long,于是引起内存溢位。

栈溢位:栈满时再做进栈必定产生空间溢位,叫上溢;栈空时再做退栈也产生空间溢位,称为下溢。

引起内存溢位的原因有很多种,常见的有以下几种:

内存中载入的资料量过于庞大;动态分配的内存,使用完后未清空;程式码中存在死循环或循环产生过多重复的物件实体。

2、内存泄漏(memory leak)

由程式申请的一块内存,如果没有指标指向它,那么这块内存就泄漏了。

所谓的内存泄漏是从操作系统的角度来看的。这里的储存空间不是实体内存,而是虚拟内存,这个虚拟内存的大小取决于磁盘交换区的设定。如使用(malloc)向系统申请分配内存,而指向这块内存的指标丢失,无法释放(free)。

内存泄漏如果不严重,可以容忍,但也会造成系统内存的浪费,当内存泄漏不断增加时,系统闲置空间越来越小,会导致程式执行速度减慢,甚至系统崩溃等严重后果。

memory leak 最终会导致 out of memory!

相关阅读

动态内存分配介绍

何为计算机的虚拟内存

C程式中常见的与内存相关的错误

迫不得已时使用动态内存分配的注意事项

2019-12-09 19:54:00

相关文章