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函式,請看下面這個**:
staticvoid 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 ...