C語言中文網 目錄

C語言內存精講,讓你徹底明白C語言的運行機制!

C語言內存專題講解當你決定學習「內存」,你已然超越了 99% 的程序員!

程序是在內存中運行的,一名合格的程序員必須了解內存,學習C語言是了解內存布局的最簡單、最直接、最有效的途徑,C語言簡直是為內存而生的,它比任何一門編程語言都貼近內存。

本專題將為你解開以下謎團:

  • C語言中使用的地址為什么是假的,計算機又是如何通過假的地址訪問到真實的物理內存的?
  • 一個C語言程序在內存中是如何分布的?函數放在哪里?變量放在哪里?字符串放在哪里?
  • 為什么全局變量在整個程序中都可以使用,而局部變量只能在函數內部使用?
  • 一個C語言程序可以使用多大的內存?
  • 操作系統和用戶程序之間是如何協作的?
  • 堆和棧都是什么,它們在程序運行過程中起到什么作用?為什么棧內存的分配效率要高于堆?
  • 棧溢出是怎么回事,如何利用棧溢出進行攻擊?
  • 內存泄漏、野指針、非法內存訪問、段錯誤都是怎么產生的?
  • 內存池、線程池、連接池等這些莫名其妙的“池子”是怎么回事?
本章內容:
1. 一個程序在計算機中到底是如何運行的?
2. 虛擬內存到底是什么?為什么我們在C語言中看到的地址是假的?
3. 虛擬地址空間以及編譯模式
4. C語言內存對齊,提高尋址效率
5. 內存分頁機制,完成虛擬地址的映射
6. 分頁機制究竟是如何實現的?
7. MMU部件以及對內存權限的控制
8. Linux下C語言程序的內存布局(內存模型)
9. Windows下C語言程序的內存布局(內存模型)
10. 用戶模式和內核模式
11. 棧(Stack)是什么?棧溢出又是怎么回事?
12. 一個函數在棧上到底是怎樣的?
13. 函數調用慣例(Calling Convention)
14. 用一個實例來深入剖析函數進棧出棧的過程
15. 棧溢出攻擊的原理是什么?
16. C語言動態內存分配
17. malloc函數背后的實現原理——內存池
18. C語言野指針以及非法內存操作
19. C語言內存泄露(內存丟失)
20. C語言變量的存儲類別和生存期

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo