面試-堆和棧

首先答這個(gè)問題需要知道這個(gè)問題的重點(diǎn)引瀑。就是兩個(gè)方面:一個(gè)從數(shù)據(jù)結(jié)構(gòu)方面葡粒,一個(gè)要從操作系統(tǒng)中程序內(nèi)存分配方面。

1.堆和棧之?dāng)?shù)據(jù)結(jié)構(gòu)方向

大家最熟悉數(shù)據(jù)結(jié)構(gòu)中的堆就是堆排序了,想看堆排的同學(xué)可以看下我github上的這個(gè)簡短代碼[https://github.com/TeamWe/FOR-C/blob/master/heap.c] 吁系。對就從這個(gè)角度下手药版。堆分為最大堆和最小堆辑舷。最大堆:跟節(jié)點(diǎn)的值大于孩子節(jié)點(diǎn)的值,左右子樹也都是最大堆槽片。經(jīng)常用來查找最大數(shù)和最小數(shù)何缓,面試中問一些大數(shù)據(jù)查找數(shù)值算法一般回答他就沒錯(cuò)了!

基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)有如下的幾個(gè)特點(diǎn)
1还栓,先入后出碌廓,后入先出。
2剩盒,除頭尾節(jié)點(diǎn)之外谷婆,每個(gè)元素有一個(gè)前驅(qū),一個(gè)后繼。

2.操作系統(tǒng)方面

導(dǎo)言-一個(gè)linux的進(jìn)程分布(可選擇跳過)

從一個(gè)進(jìn)程的地址空間的低地址向高地址增長
1.code段波材,就是存放代碼股淡,可讀可執(zhí)行不可寫,也稱為正文段廷区,代碼段唯灵。2.data段,存放已初始化的全局變量和已初始化的static變量(不管是局部static變量<這里面就包括我上篇問題提到的字符串的存儲>還是全局static變量)
3.bss段,存放全局未初始化變量和未初始化的static變量(也是不區(qū)分局部還是全局static變量)
以上這3部分是確定的隙轻,也就是不同的程序埠帕,以上3部分的大小都各不相同,因程序而異玖绿,若未初始化的全局變量定義的多了敛瓷,那么bss區(qū)就大點(diǎn),反之則小點(diǎn)斑匪。
4.heap,也就是堆呐籽,堆在進(jìn)程空間中是自低地址向高地址增長,你在程序中通過動態(tài)申請得到的內(nèi)存空間(c為malloc\free,c++為new\delete)蚀瘸,就是在堆中動態(tài)分配內(nèi)存的狡蝶。(這個(gè)詳細(xì)分配,看我的malloc的底層實(shí)現(xiàn))
5.stack,棧贮勃,程序中每個(gè)函數(shù)中的局部變量贪惹,都是存放在棧中,棧是自高地址向低地址增長的寂嘉。起初奏瞬,堆和棧之間有很大一段空間,然后隨著泉孩,程序的運(yùn)行硼端,堆不斷向高地址增長,棧不斷向高地址增長棵譬,這樣显蝌,堆跟棧之間的空間總有一個(gè)最大界限,超過這個(gè)最大界限订咸,就會出現(xiàn)堆跟棧重疊曼尊,就會出錯(cuò),所以一般來說脏嚷,Linux下的進(jìn)程都有其最大空間的骆撇。
6.再往上,也就是一個(gè)進(jìn)程地址空間的頂部父叙,存放了命令行參數(shù)和環(huán)境變量神郊。

堆和棧

同:兩者在操作系統(tǒng)中都是為了存儲數(shù)據(jù)而存在的肴裙。
異:1.出現(xiàn)錯(cuò)誤的情況:棧由編譯器自動分配釋放,最大的程序問題會出現(xiàn)棧溢出涌乳。堆由程序員手動管理稍有不當(dāng)就會產(chǎn)生內(nèi)存泄漏還有各種segment fault蜻懦。
2.效率:棧申請速度快,堆要經(jīng)過算法篩選比較慢夕晓。操作系統(tǒng)有一個(gè)記錄當(dāng)前空閑內(nèi)存地址的鏈表宛乃,當(dāng)系統(tǒng)收到程序的申請時(shí),會遍歷該鏈表蒸辆,并且尋找第一個(gè)大于當(dāng)前申請的堆空間(這取決于采取何種算法-首次適應(yīng)算法征炼,循環(huán)首次適應(yīng)算法,最佳適應(yīng)算法躬贡,最壞適應(yīng)算法谆奥,快速適應(yīng)算法),然后重新建立新的空閑鏈表拂玻,將這個(gè)節(jié)點(diǎn)分配酸些。另一個(gè)堆慢的原因就是比如int *p = &a;他是要先在p里面找到這個(gè)指針的地址然后再到這個(gè)地址指向的空間尋找所需的數(shù)據(jù),多了一個(gè)步驟固然變慢了檐蚜。
3.內(nèi)容:棧一般放當(dāng)前所需要的數(shù)據(jù)擂仍,堆中隨時(shí)存儲。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末熬甚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子肋坚,更是在濱河造成了極大的恐慌乡括,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件智厌,死亡現(xiàn)場離奇詭異诲泌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)铣鹏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門敷扫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人诚卸,你說我怎么就攤上這事葵第。” “怎么了合溺?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵卒密,是天一觀的道長。 經(jīng)常有香客問我棠赛,道長哮奇,這世上最難降的妖魔是什么膛腐? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮鼎俘,結(jié)果婚禮上哲身,老公的妹妹穿的比我還像新娘。我一直安慰自己贸伐,他們只是感情好勘天,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棍丐,像睡著了一般误辑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歌逢,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天巾钉,我揣著相機(jī)與錄音,去河邊找鬼秘案。 笑死砰苍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阱高。 我是一名探鬼主播赚导,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赤惊!你這毒婦竟也來了吼旧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤未舟,失蹤者是張志新(化名)和其女友劉穎圈暗,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裕膀,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡员串,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昼扛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寸齐。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖抄谐,靈堂內(nèi)的尸體忽然破棺而出渺鹦,到底是詐尸還是另有隱情,我是刑警寧澤斯稳,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布海铆,位于F島的核電站,受9級特大地震影響挣惰,放射性物質(zhì)發(fā)生泄漏卧斟。R本人自食惡果不足惜殴边,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望珍语。 院中可真熱鬧锤岸,春花似錦、人聲如沸板乙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽募逞。三九已至蛋铆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間放接,已是汗流浹背刺啦。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纠脾,地道東北人玛瘸。 一個(gè)月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像苟蹈,于是被迫代替她去往敵國和親糊渊。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 從三月份找實(shí)習(xí)到現(xiàn)在慧脱,面了一些公司渺绒,掛了不少,但最終還是拿到小米菱鸥、百度芒篷、阿里、京東采缚、新浪、CVTE挠他、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,255評論 11 349
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,150評論 30 470
  • 2016年國慶假期終于把此書過完殖侵,整理筆記和體會于此贸呢。 關(guān)于書名 書名源于俄羅斯的演員斯坦尼斯拉夫斯基創(chuàng)作的《演員...
    李劍飛的簡書閱讀 7,247評論 2 65
  • 喜歡的話記得點(diǎn)贊 一、內(nèi)存管理:移動設(shè)備的內(nèi)存及其有限拢军,每一個(gè)APP所能占用的內(nèi)存是有限制的二楞陷、什么行為會增加AP...
    藍(lán)白七七閱讀 2,010評論 1 12
  • 三月份大姨媽2號來的,昨天我還在想:大姨媽知道二月是28天嗎茉唉?是不是三月會晚幾天駕到固蛾? 今天三月一號结执,大姨媽用實(shí)際...
    寶微微閱讀 161評論 3 2