第一週總結

精通windows api:

1.文件系統:

卷(volumes)

磁盤和驅動器管理:  操作驅動器掛載點

文件和目錄管理:  獲取程序所在的目錄,程序模塊路徑,獲取和設置當前目錄

                        查找文件,遍歷指定目錄下的文件和子目錄

                        遞歸遍歷目錄樹

                        獲取,設置文件屬性和時間

內存映射文件:   使用Mapping File提高文件讀寫的效率

                      通過Mapping File在進程間傳遞和共享數據

2.內存管理:

虛擬地址空間:  爲了訪問內存的統一和方便,操作系統允許其上運行的程序訪問所有的4GB內存空間中的地址;

 

進程的內存空間:  32位的window操作系統將4GB的虛擬內存劃分爲兩個部分,進程使用2GB,稱爲用戶進程空間;內核使用2GB,稱爲系統地址空間或內核地址空間(也可設置爲用戶進程空間使用3GB,內核使用1GB),用戶空間的地址範圍爲0x00000000~0x7FFFFFFF,內核空間的地址範圍爲0x80000000~0xFFFFFFFF

 

分頁與分段內存管理,內存映射與地址轉換:  32位地址的高10位稱爲頁目錄索引(Directory),次10位稱爲頁表索引(Table),餘下的12位爲偏移(Offset)

 

進程的內存空間:  虛擬內存與物理內存的對應關係window系統中每個進程都有一個私有的虛擬地址空間,系統需要將每個進程的虛擬地址都映射到物理內存地址上;系統爲每一個進程都創建一個頁目錄(Directory)和一組頁表;每個進程的頁表是獨立的,而內核空間的頁表是所有進程共享的

 

虛擬內存佈局,內存的分工,堆與棧:  進程的虛擬內存空間分爲兩個部分,低2GB(或3GB)由應用程序使用,高2GB(或1GB)由系統內核程序使用;系統內核的內存空間中包括驅動程序,系統內核可執行程序,用於內存管理的數據結構(頁目錄,頁表等),用於進程管理,線程調度的數據結構,各種中斷處理程序,系統緩存等; 應用程序可使用的低地址空間中包括了應用程序的代碼,數據(全局變量等),系統和用戶DLL的代碼,各線程的棧,堆等; 進程的每個線程都有自己的棧,棧與函數的調用,執行和返回及局部變量的保存有關,一般情況下,棧中保存着函數的參數,返回地址和局部變量,調用函數將參數入棧,調用指令將函數返回地址入棧,被調用函數負責保存調用函數的相關棧指針,爲局部變量分配空間等; 堆是一種可以動態分配和釋放的內存,由堆管理器進行管理,用戶在程序中使用的內存分配函數都是通過堆進行分配的

 

堆管理:  用戶使用內存分配函數分配的內存都位用堆中,所以使用堆管理函數對內存進行分配,釋放等是最爲直接的方式;Window系統中,每個進程都有自己的堆,每個進程的堆的數量也有所不同;堆(Heap)並不是內存塊,而是一種用於內存管理的對象,也是一種內存組織的形式;

 

虛擬內存管理:進程的虛擬地址空間內存頁面分爲3種狀態:空閒的(free),保留的(reserved)和提交的(committed);  如果直接分配內存爲"提交的",那麼在分配完成後就可以對內存進行訪問

 

內存操作與內存信息管理:CopyMemory, FillMemory, MoveMemory, ZeroMemory

 

C++ primer plus:

類內存分配(C,C++技術交流羣):

class A

{}

類大小爲1,編譯器爲空類加入一個char,使類在內存中有個唯一的地址,不是空類時,就不會加

class A

{

     char a;

     int b;

     char c;

}

大小爲12

class A

{

    char a;

    char b;

    int c;

}

類大小爲:8

class A

{

    char a;

    int b;

    double c;

}

類大小爲16

class A

{

    char a;

    double b;

    int c;

}

類大小爲24

以上爲類的內存地址對齊方式;

 

const Stock& topval ( const Stock& s)const

括號中的const表明,該函數不會修改被顯式地訪問的對象;

括號後的const表明,該函數不會修改被隱式地訪問的對象;

由於該函數返回了兩個const對象之一的引用,因此返回類型也應爲const引用;

 

數據結構:

串:

KMP算法:暈了幾天,還是沒搞懂;最後,大概弄懂了意思,只是沒從代碼角度去理解;

中綴表達式,後綴表達式

遞歸兩個條件:一是規模較大的問題能分解成爲一個或多個規模較小,但具有類似於原問題特性的子問題,即較大的問題可用較小的子問題來描述,解原問題的方法同樣可用來解這些子問題,如有必要,這種分解可以繼續下去;二是存在一個或多個無須分解,可直接求解的最小子問題;前者稱爲遞歸步驟,後者稱爲終止條件;(典型:漢諾塔)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章