整天都說的控制代碼到底是啥子東西!

來源:互聯網
上載者:User

控制代碼是一個指向指標的指標,我們(學過C語言的)(應該都學過)知道,指標中儲存的是記憶體位址,那麼一個指向指標的指標,他儲存的就是另一個指標的地址,我們可以通過一個指標來找到另一個指標,然後再通過另一個指標訪問到具體的資料,

   那麼為什麼要這麼麻煩呢?(單就一個指標就夠煩惱了)

  我們知道,當運行一個佔用大量記憶體的程式的時候,系統記憶體很快就會被填滿,這時WINDOWS就會自動將那些暫時不用的資料放到硬碟中,而這些資料所佔的空間就是虛擬記憶體.打個比方,電腦的剩餘實體記憶體只有1G,我們同時運行遊戲和QQ,遊戲佔用1G記憶體,而QQ佔用100M,假如沒有虛擬記憶體,那麼QQ就不能運行,因為系統無法給QQ分配合適大小的記憶體,但是有了虛擬記憶體,那麼就可以將遊戲的一些不常用的資料轉移出來,存放到虛擬記憶體中,比如說儲存到硬碟上的一個叫pagefile.sys的檔案中,同時釋放掉這些被轉移的資料,這樣就有了足夠的記憶體運行QQ,而當遊戲運行到需要載入那些被轉移的資料時,可以釋放掉一些不常用的資料,將其儲存到硬碟檔案pagefile.sys中,然後再讀取pagefile.sys檔案中關於遊戲的資料,這樣迴圈移動資料的過程就是微軟的虛擬記憶體技術。

  我們看到,為了最大限度的使用實體記憶體,Windows需在實體記憶體和虛擬記憶體之間來回移動資料,以此來滿足各種應用程式的記憶體需要.資料被移動意味著它的地址發生了變化.假如我們仍然按照先前的地址來訪問它,是會出錯的.那麼我們如何才能得到資料正確的地址呢?

為瞭解決這個問題,WINDOWS作業系統專門騰出一塊記憶體空間用來儲存資料在記憶體中的地址變化,WINDOWS作業系統每次移動資料後,都要把資料新的地址告知這個記憶體空間來儲存,而記錄地址變化的這塊記憶體空間它的地址是保持不變的.

   我們把這個不變的地址叫做控制代碼,我們就可以通過該控制代碼找到資料的最新地址,然後訪問該資料.

   但是,必須注意的是程式每次重新啟動,WINGDOWS作業系統所分配的控制代碼都是不一樣的,這就好像每次抽獎都抽到不同的號碼一樣,當然也有可能抽到同一個號碼,只不過幾率小了點罷了.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.