日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

內存是怎樣一步步被分配出來的?

來源: 責編: 時間:2024-06-27 08:35:07 223觀看
導讀大家好,我是小風哥,今天簡單聊聊內存分配。我們申請一塊內存時計算機內部發(fā)生了什么?看下這句代碼:圖片這里有兩部分,一個是malloc,再一個是你寫的代碼。圖片malloc實際上屬于標準庫,標準庫里有什么呢?數學相關的函數,sin、cos

大家好,我是小風哥,今天簡單聊聊內存分配。SCe28資訊網——每日最新資訊28at.com

我們申請一塊內存時計算機內部發(fā)生了什么?看下這句代碼:SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

SCe28資訊網——每日最新資訊28at.com

這里有兩部分,一個是malloc,再一個是你寫的代碼。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

SCe28資訊網——每日最新資訊28at.com

malloc實際上屬于標準庫,標準庫里有什么呢?SCe28資訊網——每日最新資訊28at.com

數學相關的函數,sin、cos、絕對值、數冪函數等;字符相關函數,判斷大小寫等;字符串操作函數、字符串拷貝、拼接比較等;當然還有內存管理函數,就是這里提到的malloc/free,當然還有很多其它函數,這就是標準庫。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

再來看你寫的代碼,什么是你寫的代碼呢?以c語言為例,.c文件就是你寫的代碼,這包括你寫的hello world程序、充滿bug的練習程序,當然還有各種項目。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

SCe28資訊網——每日最新資訊28at.com

這就是你寫的代碼。SCe28資訊網——每日最新資訊28at.com

這些代碼怎么變成最終的可執(zhí)行程序呢?當然是借助編譯器。SCe28資訊網——每日最新資訊28at.com

編譯器會把你的代碼編譯成目標文件。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

接著鏈接器出場,連接器會把目標文件和標準庫打包成可執(zhí)行程序。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

這就是代碼部分,接下來我們看內存分配。SCe28資訊網——每日最新資訊28at.com

到底什么是內存呢?SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

SCe28資訊網——每日最新資訊28at.com

內存實際上和儲物柜非常相似,儲物柜會劃分成了一個一個大小相同的隔間,每個隔間可以存儲東西,內存的道理也一樣,內存也被劃分成了一個一個大小相同的隔間,我們來仔細看一下。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

SCe28資訊網——每日最新資訊28at.com

內存中的每個隔間存儲的是一個字節(jié),8比特位一字節(jié)。SCe28資訊網——每日最新資訊28at.com

比如這里申請的一塊int大小的內存,一個int占據4個字節(jié)。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

SCe28資訊網——每日最新資訊28at.com

和儲物柜一樣,內存中的每個隔間也有一個編號,這個編號叫做內存地址。SCe28資訊網——每日最新資訊28at.com

在我們的實例中,申請的這塊內存位于內存地址2這個位置,這意味著什么嗯?這意味著變量p等于數字2,或者說等于內存地址2,這里的p就是所謂的指針。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

SCe28資訊網——每日最新資訊28at.com

接著我們看內存分配過程。SCe28資訊網——每日最新資訊28at.com

這段代碼當然屬于編譯后生成的可執(zhí)行程序,可執(zhí)行程序是在內存中運行的,當然我們需要為整個程序分配一塊內存。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

程序的運行依賴棧區(qū),這里存放著局部變量等信息;依賴堆區(qū),這里存放著程序員自己管理的動態(tài)申請的內存,關于堆區(qū)和棧區(qū)之前的視頻也有講解;除此之外還依賴代碼區(qū),這里保存的就是編譯后的之類;還有數據區(qū),這里保存著全局變量等信息。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

這些區(qū)域在內存中的布局是這樣的:SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

SCe28資訊網——每日最新資訊28at.com

再次強調下,編譯后的代碼位于代碼區(qū),malloc動態(tài)申請的內存位于堆區(qū),接下來我們只關注堆區(qū)。SCe28資訊網——每日最新資訊28at.com

在程序開始運行時堆區(qū)當然是空的,那么所謂的內存分配到底是什么呢?如果讓你實現內存分配器該怎么做到呢?很簡單,其實內存分配就是劃分地盤。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

此時要分配第一塊大小為A的內存,那么你應該把A放在哪里呢?SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

因為此時堆區(qū)是空的,顯然你可以把開始這個位置劃分給A,作為A的地盤,找到A的地盤后malloc這個函數返回,內存分配過程結束,是不是很簡單。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

接著程序員又開始申請大小為B的內存,道理和A一樣,把A之后的地盤給B即可。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

程序員又開始申請大小為C的內存,同理。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

SCe28資訊網——每日最新資訊28at.com

接著程序員說A占用的這塊內存使用完畢,調用free釋放,所謂釋放就是把A占據的地盤重新標記為空閑,這時堆區(qū)里還有兩塊空閑內存。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

接著程序員開始申請大小為D,這時問題來了,你該從哪里給D劃分地盤呢?SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

SCe28資訊網——每日最新資訊28at.com

放到第一個空閑塊嗎?顯然第一個空閑塊大小不夠。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

第二個呢,第二個也不夠。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

但是你發(fā)現了一個問題,仔細看著兩個空閑塊,這兩個空閑塊的總大小實際上是超過D的。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

我們把這種空閑的但是不能用來分配出去的內存稱之為內存碎片。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

你可以想象一下經過不斷的內存申請和釋放,堆區(qū)中會存在無數這樣空閑內存碎片。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

碎片化的內存顯然不利于內存的充分利用,計算機科學歷史上有無數論文試圖來解決這個問題。SCe28資訊網——每日最新資訊28at.com

現在堆區(qū)已經不足以為D申請出內存,該怎么辦呢?SCe28資訊網——每日最新資訊28at.com

讓我們回到最初的布局,注意看堆區(qū)和棧區(qū)中間實際上還有一段空閑內存區(qū)域,這塊區(qū)域就是為堆區(qū)或棧區(qū)來擴大地盤用的,那么該怎么擴大堆區(qū)呢?SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

這就要借助操作系統(tǒng)的幫助了。SCe28資訊網——每日最新資訊28at.com

在linux等系統(tǒng)中可以借助brk等系統(tǒng)調用向操作系統(tǒng)申請來擴大堆區(qū)。SCe28資訊網——每日最新資訊28at.com

圖片圖片SCe28資訊網——每日最新資訊28at.com

SCe28資訊網——每日最新資訊28at.com

現在堆區(qū)擴容完畢,此時就可以在堆區(qū)中找出一塊合適的空閑內存分配給D,到這時malloc這個過程才真正結束,這實際上是一個相當復雜的過程。SCe28資訊網——每日最新資訊28at.com

圖片 圖片 SCe28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-96829-0.html內存是怎樣一步步被分配出來的?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 高通中國區(qū)董事長孟樸:攜手生態(tài)伙伴,共創(chuàng)數智時代下的新增長機遇

下一篇: 最高優(yōu)惠 300 元,小米 Civi 4 Pro 手機開啟“暑期特惠”:驍龍 8s Gen3,2799 元起

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美日韩福利| 亚洲激情社区| 国产精品久久久久av免费| 国产精品美女久久久久aⅴ国产馆| 国产精品嫩草久久久久| 国产一区二区三区在线观看免费| 国产一区二区日韩精品| 在线观看免费视频综合| 日韩一区二区精品葵司在线| 亚洲一级在线观看| 久久国产高清| 欧美精品在线看| 国产欧美一区二区三区久久人妖| 在线观看福利一区| 夜久久久久久| 午夜亚洲一区| 欧美激情一区三区| 国产精品综合av一区二区国产馆| 亚洲电影欧美电影有声小说| 亚洲一区二区久久| 免费不卡欧美自拍视频| 国产精品久久久久久久久久直播| 一区二区在线视频观看| 亚洲网站在线观看| 裸体歌舞表演一区二区| 国产精品视频一区二区三区 | 亚洲第一主播视频| 亚洲一级二级在线| 欧美成人激情在线| 国产日韩欧美三区| 99在线精品观看| 久久精品一区二区| 欧美视频在线观看免费| 亚洲国产成人在线视频| 欧美影院成年免费版| 欧美日韩国产精品成人| 激情婷婷亚洲| 午夜在线成人av| 欧美日韩国产一中文字不卡| 国模精品一区二区三区| 亚洲在线1234| 欧美精品亚洲一区二区在线播放| 国产一区视频在线看| 日韩小视频在线观看| 久久一区二区三区超碰国产精品| 国产精品素人视频| 一区二区三区波多野结衣在线观看| 久久频这里精品99香蕉| 国产日韩在线看| 亚洲图片在线观看| 欧美美女日韩| 亚洲国产欧美一区| 久久噜噜亚洲综合| 国产亚洲精品高潮| 亚洲欧美日韩综合| 欧美性生交xxxxx久久久| 亚洲黄色成人| 另类图片国产| 激情欧美一区二区| 久久av最新网址| 国产欧美二区| 亚洲欧美日韩另类| 国产精品爱久久久久久久| 日韩一级精品| 欧美精品一区二区三区在线播放| 在线国产日韩| 久久亚洲国产成人| 国内精品伊人久久久久av一坑| 性欧美8khd高清极品| 国产精品一区二区女厕厕| 亚洲一区在线看| 国产精品久久久久久户外露出| 一区二区三区 在线观看视频| 欧美激情导航| 亚洲伦理在线免费看| 欧美激情在线有限公司| 亚洲欧洲一区二区三区久久| 你懂的国产精品| 亚洲黄色尤物视频| 欧美成人一区二区在线 | 亚洲激情网址| 欧美激情中文字幕乱码免费| 亚洲国内在线| 欧美激情视频一区二区三区在线播放| 亚洲激情欧美| 欧美精品一区二区三区四区| 亚洲伦理中文字幕| 欧美日韩四区| 亚洲天堂黄色| 国产欧美日韩视频一区二区三区 | 欧美三区在线观看| 亚洲天堂成人| 国产日产欧美一区| 久久精视频免费在线久久完整在线看| 国产一区二区欧美日韩| 久久欧美中文字幕| 亚洲激情在线激情| 欧美日韩三级| 亚洲欧美日韩在线不卡| 国产亚洲综合在线| 久久综合色婷婷| 亚洲精品美女| 欧美性片在线观看| 欧美一区二区大片| 怡红院精品视频| 欧美精品日韩一区| 亚洲一区二区三区三| 国产日本欧洲亚洲| 美女精品在线观看| 亚洲狼人综合| 国产精品亚洲激情| 久久另类ts人妖一区二区| 亚洲国产综合在线看不卡| 欧美午夜激情小视频| 欧美一区二区三区四区视频| 在线成人中文字幕| 欧美日韩精品一区二区在线播放 | 亚洲成色www久久网站| 欧美精品一区二区在线观看| 亚洲一区黄色| 一区视频在线看| 欧美日韩另类在线| 欧美一区午夜视频在线观看| 亚洲国产日韩欧美在线99| 欧美三级日韩三级国产三级| 久久高清一区| 日韩午夜在线播放| 国产欧美精品一区二区色综合| 久久综合伊人77777尤物| 一区二区不卡在线视频 午夜欧美不卡'| 国产区二精品视| 欧美国产在线观看| 亚洲专区一区| 亚洲欧洲精品一区二区| 国产精品女人网站| 欧美凹凸一区二区三区视频| 亚洲综合另类| 亚洲国产一区二区a毛片| 国产精品视频观看| 欧美风情在线| 欧美一区二区三区在线免费观看| 亚洲激情精品| 国产自产在线视频一区| 欧美日本国产视频| 久久久另类综合| 亚洲午夜av在线| 亚洲国产高清自拍| 国产欧美日韩三区| 欧美涩涩视频| 女主播福利一区| 欧美诱惑福利视频| 在线视频欧美一区| 亚洲国产美国国产综合一区二区| 国产精品网红福利| 欧美日本国产视频| 另类图片综合电影| 欧美亚洲一区二区三区| 一本一道久久综合狠狠老精东影业| 国产亚洲精品资源在线26u| 欧美日韩中文另类| 欧美成人一品| 久久久夜精品| 久久国产精品久久国产精品| 亚洲视频在线观看免费| 亚洲人被黑人高潮完整版| 国产日韩欧美成人| 国产精品mm| 欧美日韩国产片| 欧美成人三级在线| 久久五月天婷婷| 欧美在线日韩| 亚洲欧美日韩精品久久奇米色影视 | 国产精品国产成人国产三级| 欧美第十八页| 一区二区亚洲精品| 国产欧美精品| 国产精品久久久久久久久免费樱桃 | 看欧美日韩国产| 午夜在线精品偷拍| 亚洲天堂网站在线观看视频| 亚洲欧洲一区二区三区久久| 在线观看欧美视频| 韩国av一区二区三区四区| 国产女主播视频一区二区| 国产精品高潮在线| 欧美日韩在线视频首页| 欧美精品一卡二卡| 欧美日韩成人在线播放| 欧美激情一二三区| 欧美成人日本| 欧美激情第五页| 欧美精品一区视频| 欧美区国产区| 欧美精品一区二区三区在线看午夜| 美日韩丰满少妇在线观看| 麻豆精品传媒视频| 久久视频在线视频| 久久午夜精品一区二区| 久久久999精品免费| 久久丁香综合五月国产三级网站| 欧美一级网站| 久久电影一区| 久久久久久久高潮| 久久青草福利网站|