C 者重建C 之路 執行機制的差異

2021-09-30 09:43:06 字數 930 閱讀 6815

執行機制的差異是大多數c++支持者唾棄c#的原因,這裡並不去討論這類說法對不對,我想說的是每種語言都有擅長和不擅長的使用場景,無需拿一種語言的長處去鄙視另外一種語言的短處。針對不同的問題,需要選擇合適的方案(包括合適語言)去解決;就好比歷史上常說的:「計謀並無好壞之分,好壞在於使用的人」。而且實際上,vs中,c#與c++都支援託管與非託管**混合雙打的使用方式。

一、c++的執行機制

c++的執行機制很簡單,其實也是我們在學校裡就學過的。這裡總結的是針對非託管的c++程式的執行過程,託管c++的執行過程基本類似於c#的執行過程。使用vs2010中工程建立的c++工程,例如win32,mfc,atl開頭的基本都是非託管的程式。

基本c++程式從編寫,編譯到執行的過程用下面一幅圖就可以簡單說明了:

在vs中,編譯器使用的是cl.exe,聯結器使用的是link.exe。

二、c#的執行機制

c#語言的執行機制其實就是所有託管語言編寫的程式的執行過程。clr是託管**的執行環境,是託管語言執行機制的核心。還是從用一幅圖說明情況:

需要注意幾點:

執行機制還有很多的東西可講,比如記憶體的分配演算法,這裡就簡單說一下:

c與c++分配乙個物件時,會查詢記憶體中可用的連續空間,如果沒有的話,會查詢可用的分散空間,找到符合大小的空間後,就分配物件,如果找不到,就報錯。

c#中主要是使用託管堆,基本是在連續的空間上分配物件,這種演算法有一定的優越性,也充分利用了計算機系統的區域性性原理,但是gc不斷的**空間與壓縮也佔據了一定的時間,一定程度影響了效率。

C 者重建C 之路 執行機制的差異

執行機制的差異是大多數c 支持者唾棄c 的原因,這裡並不去討論這類說法對不對,我想說的是每種語言都有擅長和不擅長的使用場景,無需拿一種語言的長處去鄙視另外一種語言的短處。針對不同的問題,需要選擇合適的方案 包括合適語言 去解決 就好比歷史上常說的 計謀並無好壞之分,好壞在於使用的人 而且實際上,vs...

C語言執行機制

include 預處理器指令 void butler void 函式宣告 intmain 主函式 void butler 函式定義開始 1.預處理 在預編譯的過程中,主要處理源 中的預處理指令,引入標頭檔案,去除注釋,去除所有的條件編譯指令,巨集的替換,新增行號,保留所有的編譯器指令。當進行預處理以...

C 中cout的執行機制

關於c 中cout的使用,相信大家再熟悉不過了,然而對於cout是如何輸出的?輸出的機制是啥,需要進一步的了解。本章娓娓道來。前幾天在網上看到這麼乙個題目 include using namespace std int hello1 int hello2 int main int a b cout ...