成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

內存溢出與內存泄漏的解析

移動開發 Android
我們在實際編程中經常會說到內存溢出和內存泄漏,特別對于C/C++程序來說(以下代碼示例均為C/C++),因為這時我們會跟內存直接打交道。然而很多時候我們并不能完全搞明白這兩個概念,有時甚至會將二者顛倒混淆。

[[130745]]

我們在實際編程中經常會說到內存溢出和內存泄漏,特別對于C/C++程序來說(以下代碼示例均為C/C++),因為這時我們會跟內存直接打交道。然而很多時候我們并不能完全搞明白這兩個概念,有時甚至會將二者顛倒混淆。

其實從命名上也能明白內存溢出和內存泄漏的大概,舉個可能并不恰當的例子。好比是往水缸里打水,本來這個缸只能裝下5桶水,第5桶裝完你還硬要裝第6桶,缸里的水自然就溢出來了,此為“內存溢出”;缸里打滿水后并沒有人用,第二天發現缸里的水少了一半,第三天一滴不剩了,原來是缸底打了個洞忘補了(為什么要在缸底打洞呢?不為什么,好玩,任性)。這就好比是申請了一塊內存忘記釋放了,造成了“內存泄漏”。下面將簡要解析一下這兩個概念。

首先說說內存溢出,內存溢出簡單的說,即指要求分配的內存超出了系統所能提供的,比如你申請了一個10字節的內存空間,你硬要往里塞11字節大小的數據,自然就滿了,溢出了嘛(如代碼示例1)。其實數組越界也是一種內存溢出,比如寫數據時超出了數組范圍(越界讀數組數據并不算內存溢出)。數組填充越界以后,再往里塞的話,就會擠占棧內存(一般數組聲明為局部變量,局部變量在棧區自動分配內存)。越界的部分被當作局部變量占用棧內存,因為棧是從RAM的底部往上長(存數據)的,而程序運行的其他數據是從頂部往下的,所以當棧越存越多,越積越高的時候,棧就會和程序運行時的數據碰頭,二者占滿整個RAM內存,此時棧再繼續消耗,棧再向上長,直接覆蓋掉程序運行時所需的變量,程序就要跑飛了。這么看來內存溢出也是很可怕的。

 

  1. void arr_test() 
  2.  { 
  3.     int arr[10]; 
  4.     arr[10] = 10

接著說說內存泄漏,一般所說的內存泄漏是指堆內存的泄漏(Heap leak),在對堆上動態申請內存,使用后未及時釋放,即會出現內存泄漏。順帶說一下,如果釋放了指針所指內存,但是未立即將指針置為NULL,就會造成野指針(如代碼示例2)。一次內存泄漏可能不會被察覺,可能也不會有什么危害,但是內存泄漏的累積會造成內存用竭,那后果就嚴重了。比如內存泄漏出現在循環體中。當然還另有一些其他形式的內存泄漏,如由于系統資源的泄漏(Resource leak )造成的內存泄漏等等。根據內存泄漏的發生頻率,一般內存泄漏可分為以下4種:
常發性內存泄漏;
偶發性內存泄漏;
一次性內存泄漏;
隱式內存泄漏。

  1. 1 void heap-leap_test 
  2. 2 { 
  3. 3     char *p = (char *)malloc(sizeof(char)); 
  4. 4     //exe task 
  5. 5     free(p);//若不釋放指針p所指內存空間,則會造成內存泄漏。 
  6. 6    p = NULL;//若不置指針p為NULL,則p就會成為野指針。 
  7. 7 } 

 

責任編輯:chenqingxiang 來源: 博客園
相關推薦

2024-03-11 08:22:40

Java內存泄漏

2009-06-10 22:03:40

JavaScript內IE內存泄漏

2016-03-21 10:31:25

Android內存泄露

2017-11-09 16:07:00

Web應用內存

2024-10-24 16:51:08

2020-01-14 10:57:39

內存泄漏虛擬機

2015-12-28 11:41:57

JVM內存區域內存溢出

2010-09-25 11:23:15

Java內存泄露

2019-01-30 18:24:14

Java內存泄漏編程語言

2024-09-09 09:41:03

內存溢出golang開發者

2012-05-15 02:04:22

JVMJava

2020-08-10 17:49:25

JVM內存溢出

2023-12-18 10:45:23

內存泄漏計算機服務器

2012-02-22 21:28:58

內存泄漏

2013-08-02 10:06:36

Android內存溢出

2025-05-06 07:24:24

2009-06-16 11:17:49

內存泄漏

2012-06-19 15:12:20

Java內存泄露

2024-02-21 08:00:55

WindowsDWM進程

2024-01-30 10:12:00

Java內存泄漏
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品无码一区二区三区 | 午夜免费福利影院 | 91视频入口 | 欧美影院 | 嫩草视频在线免费观看 | 亚洲精品久久久 | 国产精品夜间视频香蕉 | 91精品国产91久久综合桃花 | 亚洲福利精品 | 青青草综合 | av网站免费在线观看 | 日韩在线免费视频 | 亚洲欧美日韩在线 | 福利成人| 欧美h视频 | 久久精品欧美一区二区三区不卡 | 网站黄色在线 | 国产精品入口 | 美女亚洲一区 | 成人精品鲁一区一区二区 | 日韩中文字幕av | 天天天天天天天干 | 操操网站 | 国产精品国产 | 国产日韩精品视频 | 亚洲九九| 青青久草 | 亚洲视频www | 青青草综合网 | 国产成人免费在线 | 成人在线观看免费 | 久久成人亚洲 | 北条麻妃视频在线观看 | 精品少妇一区二区三区在线播放 | 欧美精品久久久 | 91视频在线看 | 不卡一区二区三区四区 | 欧美日韩国产传媒 | 超碰在线播 | 亚洲精品电影在线观看 | 国产精品国产a级 |