20130311 編譯鏈結 記憶體

2022-05-01 00:48:16 字數 581 閱讀 7753

編輯——在開發工具裡寫程式

預處理——載入一些標頭檔案、巨集替換

編譯——將.c 或者 .cpp檔案轉化為目標檔案(.o)

鏈結——將所有的.o及一些動態鏈結庫檔案(.exe  .dll等)整合到一塊

裝入記憶體——把整合好的東東放入記憶體

執行——獲取cpu的控制權,開始執行

比如呼叫乙個函式printf,編譯的結果會產生一條呼叫printf的彙編指令,但是這時候並不知道printf是否存在、在**

到了鏈結的時候從某個庫里找到printf的**,然後如樓主所說整合到一塊。如果找不到就會出現鏈結錯誤。

2、常量也是有記憶體位址的,void*指標可以儲存任何型別的指標。

3、沒有初始化的指標的指向是隨機的,就是野指標,與空指標不同。

4、虛函式與純虛函式的區別

虛函式:用於動態繫結,動態表示在程式執行的時候繫結要呼叫的函式。需要函式實現

純虛函式:虛基類。沒有函式實現,子類中中必須有函式實現

虛基類不能建立物件

5、指標相減是已元素為單位不是位元組

編譯鏈結詳解

因為這相當於在標頭檔案裡定義了const物件。作為例外,int char等可以進行就地初始化,是因為這些變數可以直接被優化為立即數,就和巨集一樣。此外,對於類的const 非static 成員變數,只能在建構函式的初始化列表中初始化,不能在類內部直接賦值,也不能在類外部賦值。而對於static co...

編譯和鏈結

一般來說,無論是c c 首先要把原始檔編譯成中間 檔案,在windows下也就是 obj 檔案,unix下是 o 檔案,即 object file,這個動作叫做編譯 compile 然後再把大量的object file合成執行檔案,這個動作叫作鏈結 link 編譯時,編譯器需要的是語法的正確,函式與...

編譯與鏈結

首先,我們可以將所有東西都放在乙個.cpp檔案內.然後編譯器就將這個.cpp編譯成.obj,obj是什麼東西?就是編譯單元了.乙個程式,可以由乙個編譯單元組成,也可以有多個編譯單元組成.假如你不想讓你的源 變得很難閱讀的話,就請使用多個編譯單元吧.乙個函式不能放到兩個編譯單元裡面,但兩個以上就可以分...