91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

內(nèi)存泄漏有什么影響

學(xué)益得智能硬件 ? 來(lái)源:學(xué)益得智能硬件 ? 2023-12-07 09:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

用malloc申請(qǐng)的內(nèi)存,沒(méi)有釋放,為什么程序也不會(huì)出錯(cuò)?

最近有好幾位同學(xué)提出了這個(gè)問(wèn)題。

講到C語(yǔ)言指針的時(shí)候,我們都會(huì)反復(fù)強(qiáng)調(diào),malloc申請(qǐng)的堆內(nèi)存,用完后一定要用free釋放掉,否則光申請(qǐng)不釋放,內(nèi)存就會(huì)變的越來(lái)越少,這種現(xiàn)象就叫做內(nèi)存泄漏。

泄漏到一定程度,沒(méi)有內(nèi)存可用,程序可能就會(huì)奔潰。

很多同學(xué)在寫代碼的時(shí)候,經(jīng)常忘記釋放內(nèi)存,比如這段代碼:

#include


void test()
{
chat*s=(char*)malloc(sizeof(char)*1024 * 1024);
}


int main()
{
    test();
    
    return 0;
}

申請(qǐng)了1M堆內(nèi)存,在程序的任何地方都沒(méi)有釋放。

運(yùn)行程序后,一切正常,而且即使運(yùn)行了很多遍,系統(tǒng)也沒(méi)有問(wèn)題。

要解釋這個(gè)問(wèn)題,就不得不提操作系統(tǒng)的內(nèi)存管理。

不管是在 Linux 還是 Windows 下寫代碼,我們用的內(nèi)存都是虛擬內(nèi)存。

以 32 位 Linux 為例,每個(gè)進(jìn)程啟動(dòng)的時(shí)候,系統(tǒng)都會(huì)給他分配4個(gè)G的虛擬內(nèi)存空間,分為用戶態(tài)和內(nèi)核態(tài),用戶態(tài)又分成了堆、棧、數(shù)據(jù)段、代碼段等等。

wKgZomVxIzuAdXqNAAiQ2d76vq4801.jpg

由于不同的進(jìn)程使用的虛擬地址空間不同,所以即使程序出現(xiàn)了段錯(cuò)誤,也就是進(jìn)程本身異常退出,并不會(huì)影響其他程序的運(yùn)行。

程序里面用malloc申請(qǐng)的就是堆空間這一段,如果程序一直在運(yùn)行不會(huì)結(jié)束,并且一直在申請(qǐng)沒(méi)有釋放,那過(guò)一段時(shí)間后程序確實(shí)會(huì)奔潰。

但是我們學(xué)習(xí)的時(shí)候,更多的是一些測(cè)試程序,運(yùn)行一下程序就結(jié)束。進(jìn)程一旦結(jié)束,系統(tǒng)就會(huì)回收這段虛擬內(nèi)存空間,對(duì)整個(gè)系統(tǒng)或者其他程序也不會(huì)產(chǎn)生什么影響。

平時(shí)寫一些測(cè)試程序,還是應(yīng)該養(yǎng)成釋放的習(xí)慣,放在大型項(xiàng)目中,內(nèi)存泄漏既有危害又難排查。

最后,給大家留一個(gè)問(wèn)題,申請(qǐng)的堆內(nèi)存,需要用free來(lái)釋放,那同一塊內(nèi)存用free釋放兩次有沒(méi)有問(wèn)題?

這個(gè)問(wèn)題在學(xué)習(xí)的時(shí)候也是經(jīng)常遇到,如果你在Linux下做開(kāi)發(fā),這個(gè)現(xiàn)象就是釋放兩次出現(xiàn)的:

wKgaomVxIzqAR84QAAHCstAd15U794.jpg

如果往上翻的話,還能看到double free字樣,所以,同樣的一塊堆內(nèi)存,只能釋放一次。


審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    183

    文章

    7644

    瀏覽量

    145650
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3846

    瀏覽量

    85260
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    484

    瀏覽量

    71864
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    74009
  • 內(nèi)存泄漏
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    9520

原文標(biāo)題:內(nèi)存泄漏有什么影響

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    錯(cuò)誤910:進(jìn)程內(nèi)存不足

    REAL>錯(cuò)誤引腳泄漏時(shí)內(nèi)存泄漏多大?它是每個(gè)錯(cuò)誤幾k,還是它取決于錯(cuò)誤的類型?如果它是一個(gè)小的內(nèi)存
    發(fā)表于 10-15 07:52

    C++內(nèi)存泄漏

    C++內(nèi)存分配與釋放均由用戶代碼自行控制,靈活的機(jī)制有如潘多拉之盒,即讓程序員了更廣的發(fā)揮空間,也產(chǎn)生了代代相傳的內(nèi)存泄漏問(wèn)題。對(duì)于新手來(lái)說(shuō),最常
    發(fā)表于 09-15 17:39 ?16次下載

    Node.js 內(nèi)存泄漏問(wèn)題初探

    持續(xù)上升,這明顯就是內(nèi)存泄漏了。制造內(nèi)存泄漏一些很明顯的情況會(huì)導(dǎo)致內(nèi)存
    的頭像 發(fā)表于 11-01 13:39 ?5528次閱讀

    內(nèi)存泄漏的特點(diǎn)和類型

    內(nèi)存的控制,因而造成了內(nèi)存的浪費(fèi)。內(nèi)存泄漏與許多其他問(wèn)題有著相似的癥狀,并且通常情況下只能由那些可以獲得程序源代碼的程序員才可以分析出來(lái)。然而,
    的頭像 發(fā)表于 06-20 10:58 ?3457次閱讀

    內(nèi)存泄漏問(wèn)題原理及檢視方法

    可能不少開(kāi)發(fā)者都遇到過(guò)內(nèi)存泄漏導(dǎo)致的網(wǎng)上問(wèn)題,具體表現(xiàn)為單板在現(xiàn)網(wǎng)運(yùn)行數(shù)月以后,因?yàn)?b class='flag-5'>內(nèi)存耗盡而導(dǎo)致單板復(fù)位現(xiàn)象。一方面,內(nèi)存泄漏問(wèn)題屬于比較
    的頭像 發(fā)表于 10-10 10:42 ?3290次閱讀

    如何使用ThreadLocal來(lái)避免內(nèi)存泄漏

    本次給大家介紹重要的工具ThreadLocal。講解內(nèi)容如下,同時(shí)介紹什么場(chǎng)景下發(fā)生內(nèi)存泄漏,如何復(fù)現(xiàn)內(nèi)存泄漏,如何正確使用它來(lái)避免內(nèi)存
    的頭像 發(fā)表于 08-20 09:29 ?4873次閱讀
    如何使用ThreadLocal來(lái)避免<b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>

    【openssl】從openssl的常用接口淺談【內(nèi)存泄漏

    使用openssl內(nèi)存泄露風(fēng)險(xiǎn)嗎?從openssl的常用接口調(diào)用淺談【內(nèi)存泄漏】的風(fēng)險(xiǎn)和規(guī)避。
    的頭像 發(fā)表于 08-31 11:24 ?4633次閱讀
    【openssl】從openssl的常用接口淺談【<b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>】

    什么是內(nèi)存泄漏?內(nèi)存泄漏哪些現(xiàn)象

    內(nèi)存泄漏幾乎是很難避免的,不管是老手還是新手,都存在這個(gè)問(wèn)題,甚至 Windows 與 Linux 這類系統(tǒng)軟件也或多或少存在著內(nèi)存泄漏。
    的頭像 發(fā)表于 09-05 17:24 ?1.1w次閱讀

    什么是內(nèi)存泄漏?如何避免JavaScript內(nèi)存泄漏

    JavaScript 代碼中常見(jiàn)的內(nèi)存泄漏的常見(jiàn)來(lái)源: 研究內(nèi)存泄漏問(wèn)題就相當(dāng)于尋找符合垃圾回收機(jī)制的編程方式,有效避免對(duì)象引用的問(wèn)題。
    發(fā)表于 10-27 11:30 ?2075次閱讀
    什么是<b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>?如何避免JavaScript<b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>

    內(nèi)存泄漏如何避免

    的數(shù),那就是內(nèi)存溢出。 2. 內(nèi)存泄漏 內(nèi)存泄露 memory leak,是指程序在申請(qǐng)內(nèi)存后,無(wú)法釋放已申請(qǐng)的
    的頭像 發(fā)表于 11-10 11:04 ?1474次閱讀
    <b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>如何避免

    內(nèi)存泄漏會(huì)產(chǎn)生哪些后果

    內(nèi)存泄漏原因 內(nèi)存泄漏在C/C++這種不帶GC(Garbage Collection)的語(yǔ)言里,是一個(gè)經(jīng)常發(fā)生的問(wèn)題。因?yàn)闆](méi)有GC,所以分配的內(nèi)存
    的頭像 發(fā)表于 11-10 15:06 ?1547次閱讀
    <b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>會(huì)產(chǎn)生哪些后果

    線程內(nèi)存泄漏問(wèn)題的定位

    記錄一個(gè)關(guān)于線程內(nèi)存泄漏問(wèn)題的定位過(guò)程,以及過(guò)程中的收獲。 1. 初步定位 是否存在內(nèi)存泄漏:想到內(nèi)存
    的頭像 發(fā)表于 11-13 11:38 ?1369次閱讀
    線程<b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>問(wèn)題的定位

    內(nèi)存溢出與內(nèi)存泄漏:定義、區(qū)別與解決方案

    內(nèi)存溢出與內(nèi)存泄漏:定義、區(qū)別與解決方案? 內(nèi)存溢出和內(nèi)存泄漏是計(jì)算機(jī)科學(xué)中常見(jiàn)的問(wèn)題,在開(kāi)發(fā)和
    的頭像 發(fā)表于 12-19 14:10 ?4628次閱讀

    C語(yǔ)言內(nèi)存泄漏問(wèn)題原理

    內(nèi)存泄漏問(wèn)題只有在使用堆內(nèi)存的時(shí)候才會(huì)出現(xiàn),棧內(nèi)存不存在內(nèi)存泄漏問(wèn)題,因?yàn)闂?/div>
    發(fā)表于 03-19 11:38 ?1200次閱讀
    C語(yǔ)言<b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>問(wèn)題原理

    如何檢測(cè)內(nèi)存泄漏

    檢測(cè)內(nèi)存泄漏是軟件開(kāi)發(fā)過(guò)程中一項(xiàng)至關(guān)重要的任務(wù),它有助于識(shí)別和解決那些導(dǎo)致程序占用過(guò)多內(nèi)存資源,從而影響程序性能甚至導(dǎo)致程序崩潰的問(wèn)題。以下將詳細(xì)闡述幾種常見(jiàn)的內(nèi)存
    的頭像 發(fā)表于 07-30 11:50 ?4890次閱讀