CLR中你想知道的事

2022-01-19 04:33:40 字數 1501 閱讀 4842

clr是什麼?

clr 公共語言執行時,是乙個可由多個語言共同使用的執行環境,核心(記憶體管理,程式集載入,安全性,異常處理和多執行緒)

visual studio是一種編譯器,編譯器也可稱為語法檢查器和正確**的分析器

visual studio點選生成或除錯的時候幹了什麼?

編譯器會生成乙個託管模組。託管模組是乙個可移植執行體(pe32)檔案,如果是64位則是可移植執行體(pe32+)檔案

visual studio為什麼可以智慧型感知類的方法和引數?

託管模組組成包括,pe32或pe32+頭,clr 頭,元資料,il**,重點就在元資料上,元資料是乙個資料表集合,資料表中描述了模組中定義了什麼,包括型別和成員,另一些描述了模組裡面引用了什麼,包括引用的型別和成員,而且生成的元資料和**是繫結到一起的,所以元資料和他的描述的il**就能永遠同步。

元資料用途:1.避免對原生c/c++頭和庫檔案的需求 2.智慧型感知方法還有引數 3.**驗證,確保型別安全 4.允許物件序列化到記憶體塊 5.允許垃圾**期跟蹤物件生存期

il是什麼,能幹什麼?

il是一種高階機器語言,il**又被稱為託管**,是microsoft作者們費盡心思地跟很多編譯器作者們請教之後的產物,能訪問和操作物件型別,並提供指令來建立和初始化物件、呼叫物件上的虛方法以及直接運算元組元素、還提供了丟擲和捕獲異常的指令來實現錯誤處理,

編譯成il**之後會再次編譯,最終生成能被cpu識別的機器指令,然後執行。

il如何執行?

說到執行,首先要提到編譯,il編譯要用到jit編譯器,jit編譯之後的入口函式稱為jitcompiler,如何編譯得到jitcompiler函式,請看下面這個**:

static

void main(string

args)

執行步驟如下:

1.在負責實現型別(console)的程式集的元資料中查詢被呼叫的方法(writeline)

2.從元資料中獲取該方法的il

3.分配記憶體塊

4.將il編譯成本機cpu指令,然後將這些本機**儲存到步驟3分配的記憶體中

5.在type表中修改與方法物件的條目,使它指向步驟3分配的記憶體塊

5.跳轉到記憶體塊中的本機**

為什麼說c++牛逼?

c++編譯器是獨一無二的,它是唯一允許開發人員同時寫託管和非託管**,並生成到同乙個模組中。

pdb檔案有什麼用?

visual studio當使用debug模式的時候會再debug資料夾中生成pdb檔案,pdb檔案可以幫助偵錯程式查詢到區域性變數並將il指令對映到源**,進行除錯。

託管**和非託管**的區別?

託管**簡單說就是需要經過clr二次編譯的**,非託管**就是可以直接編譯成cpu指令的**。

你想知道的字元編碼

1 什麼是字元?從顯示的角度來說,字元可以理解成就是我們需要顯示的單一實體。包括,數字6,字母5,中文 好 等等。對字元的其它名詞解釋 字元 character 是文字與符號的總稱,包括文字 圖形符號 數學符號等。2 什麼是字符集?一組字元的集合就是字符集。字符集常常和一種具體的語言文字對應起來,該...

你想知道的負載均衡

本文 一篇文章徹底了解清楚什麼是負載均衡。負載均衡是高可用網路基礎架構的的乙個關鍵組成部分,有了負載均衡,我們通常可以將我們的應用伺服器部署多台,然後通過負載均衡將使用者的請求分發到不同的伺服器用來提高 應用 資料庫或其他服務的效能以及可靠性。為什麼要引入負載均衡?先看乙個沒有負載均衡機制的web架...

溢位 你想知道的C語言 3 7

q 溢位的本質是什麼?a 江河漫漫,才華會溢,箱子會滿,人會吃飽。無止境增加一定會滿,事物的有限性,物質和慾望增長一定會撐不住。q n位元組無符號整形最大值再加1會變成什麼?a 思考1位元組的情形 unsigned char c uchar max printf d n unsigned char ...