在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

      1. <sup id="colbm"><progress id="colbm"><p id="colbm"></p></progress></sup>

          鍍金池/ 教程/ 數(shù)據(jù)分析&挖掘/ 內(nèi)存
          hash表
          單詞統(tǒng)計(jì)
          鏈表排序
          查找
          可變參數(shù)
          爬樓梯
          內(nèi)存
          prim算法 中
          線性結(jié)構(gòu)的處理
          數(shù)據(jù)選擇
          prim算法 上
          循環(huán)單向鏈表
          基數(shù)排序
          堆排序
          鏈表重合
          排序二叉樹(shù)的保存和加載
          圖添加和刪除
          排序二叉樹(shù)線索化
          非遞歸排序
          字符串查找 下篇
          鏈表逆轉(zhuǎn)
          函數(shù)堆棧顯示
          遞歸和堆棧
          二叉樹(shù)深度遍歷
          線性隊(duì)列
          循環(huán)和遞歸
          快速排序
          尋找丟失的數(shù)
          A*算法
          克魯斯卡爾算法 下
          排序二叉樹(shù)
          大數(shù)計(jì)算
          二叉樹(shù)廣度遍歷
          prim算法 下
          洗牌算法
          圖結(jié)構(gòu)
          最大公約數(shù)、最小公倍數(shù)
          圖創(chuàng)建
          雙向鏈表
          字符串查找 上篇
          尋路
          通用算法的編寫(xiě)
          哈夫曼樹(shù) 下
          線性堆棧
          八皇后
          排序二叉樹(shù)刪除-1
          挑選最大的n個(gè)數(shù)
          字符串查找 中篇
          哈夫曼樹(shù) 上
          合并排序
          回?cái)?shù)
          選擇排序
          哈希二叉樹(shù)
          通用數(shù)據(jù)結(jié)構(gòu)
          “數(shù)星星”
          單向鏈表
          排序二叉樹(shù)插入
          圖的保存
          排序二叉樹(shù)刪除-2
          排序二叉樹(shù)刪除-3
          n!中末尾零的個(gè)數(shù)統(tǒng)計(jì)

          內(nèi)存

          內(nèi)存是程序運(yùn)行的基礎(chǔ)。所有正在運(yùn)行的代碼都保存在內(nèi)存里面。內(nèi)存需要處理各種各樣的數(shù)據(jù),包括鍵盤(pán)的數(shù)據(jù)、鼠標(biāo)的數(shù)據(jù)、usb的數(shù)據(jù)、串口的數(shù)據(jù)、攝像頭的數(shù)據(jù),那么這些數(shù)據(jù)經(jīng)過(guò)程序的處理之后,就要進(jìn)行輸出到串口、屏幕、usb等。

          內(nèi)存只有一個(gè),但是程序里面的空間有很多種。但是內(nèi)存中的數(shù)據(jù)類(lèi)型只有幾種,比如說(shuō)全局中的數(shù)據(jù)、堆中的數(shù)據(jù)、臨時(shí)堆棧中的數(shù)據(jù)。那么他們有什么區(qū)別呢?我們可以通過(guò)代碼發(fā)現(xiàn)一些問(wèn)題。

          (1)全局?jǐn)?shù)據(jù)

          static int value = 100;
          
          void process()
          {
              static int number = 10;
          }

          大家可以在這里看到,value和number的數(shù)據(jù)其實(shí)都屬于全局?jǐn)?shù)據(jù),這里的變量是不隨著函數(shù)的調(diào)用發(fā)生變化的。

          (2)堆數(shù)據(jù)

          void process()
          {
              char* point = (char*)malloc(100);
              free(point);
          }

          這里的point分配的數(shù)據(jù)就是堆數(shù)據(jù),如果沒(méi)有free操作,那么它的存在也是全局的。只要內(nèi)存不主動(dòng)釋放,那么這個(gè)內(nèi)存就會(huì)以一直存在。

          (3)臨時(shí)數(shù)據(jù)

          void process()
          {
              char name[100] = {0};
              return;
          }

          這里的數(shù)據(jù)都是堆棧內(nèi)部的數(shù)據(jù),一旦process調(diào)用結(jié)束返回之前,那么name地址指向的內(nèi)存空間已經(jīng)被其他函數(shù)使用。此時(shí)這段內(nèi)存空間對(duì)我們來(lái)說(shuō)已經(jīng)沒(méi)有什么意義了。所以,不管在函數(shù)里面用了多少空間,如果你想在函數(shù)返回之前繼續(xù)使用里面的數(shù)據(jù),務(wù)必在函數(shù)返回前拷貝完畢。

          這篇博客的內(nèi)容比較簡(jiǎn)單,主要講述了內(nèi)存的一些內(nèi)容。其實(shí)關(guān)于內(nèi)存的東西還很多。這里說(shuō)明一下只是讓大家有一個(gè)了解:

          1) 全局?jǐn)?shù)據(jù)是我們喜歡使用的類(lèi)型,用起來(lái)比較方便

          2)堆數(shù)據(jù)是系統(tǒng)給我們安排的空間

          3)堆??臻g只能存在于當(dāng)時(shí)的函數(shù)之中,函數(shù)返回即失去意義

          雖然我們上面這么說(shuō),但是這三個(gè)概念有的時(shí)候也是可以相互遷移的,比如說(shuō):

          1) 有的時(shí)候,我們?yōu)榱藴y(cè)試的需要,首先構(gòu)建一個(gè)全局內(nèi)存池,以后測(cè)試的內(nèi)存都是通過(guò)自定義的malloc在內(nèi)存池中分配的,所以這個(gè)時(shí)候,堆分配和全局聯(lián)系在了一起。

          全局內(nèi)存空間 < =========> 內(nèi)存池 < =========> 本地空間分配

          2) 如果我們使用的函數(shù)空間比較小,那么所有的操作就可以在一個(gè)函數(shù)內(nèi)部完成了,那么這時(shí)候全局空間和臨時(shí)堆棧是不是一致的呢

          全局空間 < =============> 本地堆棧

          上面的說(shuō)法有些繞,但是我們的目的只是想讓大家時(shí)刻明白:

          a)必須時(shí)刻明白我們的數(shù)據(jù)在哪塊空間里面

          b)內(nèi)存會(huì)不會(huì)越界

          c)內(nèi)存會(huì)不會(huì)泄露

          d)內(nèi)存訪問(wèn)的數(shù)據(jù)是否依然有效