燙燙燙、屯屯屯、錕斤拷、諾諾諾的簡單示例程式碼

hemeinvyiqiluoben發表於2018-03-04

轉自:http://blog.csdn.net/sinat_27382047/article/details/72810390

手持兩把錕斤拷,口中疾呼燙燙燙。腳踏千朵屯屯屯,笑看萬物鍩鍩鍩

燙燙燙

簡單點說,最常見的就是 陣列沒初始化 並且按照 %s 輸出了。

  1. #include<stdio.h>  
  2. int main()  
  3. {  
  4.     char a[5];  
  5.     a[0] = 'a';//第一個賦了值  
  6.         printf("%s\n",a);  
  7.     return 0;  
  8. }  

在 Debug 模式下,會把未初始化的棧記憶體全部填成 0xcc,用字串來看就是"燙燙燙燙燙燙燙"

在Visual Studio中的Debug模式下,如果宣告一個變數,但是沒有初始化,微軟會給未初始化的記憶體賦值為0xCC。給為初始化的記憶體賦0xCC是有原因的,0xCC其實是INT3中斷指令,所以如果在Debug模式下試圖去執行這塊未初始化的記憶體的話就會中斷程式


屯屯屯

簡單點說,最常見的就是 malloc後沒初始化 並且按照 %s 輸出了。

  1. #include<stdio.h>    
  2. #include<malloc.h>    
  3. int main()  
  4. {  
  5.     char *p;  
  6.   
  7.     p = (char *)malloc(16);  
  8.     if (p)  
  9.         printf("%s", p);  
  10.     free(p);  
  11.     return 0;  
  12. }  

……會把未初始化的堆記憶體全部填成0xcd,用字串看就是“屯屯屯屯屯屯屯屯”。



——堆記憶體和棧記憶體詳解:http://blog.csdn.net/abcjennifer/article/details/39780819

1棧區stack)—由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧 
2
堆區heap)— 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由OS回收。注意它與資料結構中的堆是兩回事,分配方式倒是類似於連結串列


錕斤拷

  1. #include<stdio.h>  
  2. int main()  
  3. {  
  4.     char *a = "\xef\xbf\xbd\xef\xbf\xbd";  
  5.     printf("%s\n", a);  
  6.     return 0;  
  7. }  

錕斤拷則涉及unicode的字符集轉換問題,Unicode和老編碼體系的轉化過程中,肯定有一些字,用Unicode是沒法表示的,Unicode官方用了一個佔位符來表示這些文字,這就是:U+FFFD REPLACEMENT CHARACTER。U+FFFD的UTF-8編碼是0xEFBFBD,如果重複多次形成:EFBFBDEFBFBDEFBFBD 這樣

在GBK/CP936/GB2312/GB18030的環境(都是中國標準惹的禍)中顯示的話,一個漢字2個位元組,最終的結果就是:斤拷——錕(0xEFBF),斤(0xBDEF),拷(0xBFBD)……


鍩鍩鍩

  1. #include<stdio.h>  
  2. int main()  
  3. {  
  4.     char *a = "\xef\xbb";  
  5.     printf("%s\n", a);  
  6.     return 0;  
  7. }  


BOM 是 Byte Order Mark 的縮寫。是UTF編碼方案裡用於標識編碼的標準標記,在UTF-16裡本來是FF FE,變成UTF-8就成了EF BB BF。這個標記是可選的,因為UTF8位元組沒有順序,所以它可以被用來檢測一個位元組流是否是UTF-8編碼的。

  • EFBB
  • BFEF
  • BBBF


出現這個問題肯定是你寫網頁的時候用了記事本 ,記事本在儲存檔案的時候把原本檔案的編碼改了記事本會預設儲存為UTF-8的編碼,而如果你原本網頁是GBK編碼的,就會出現亂碼~



比較不錯的解釋:

——集大成者http://blog.csdn.net/me4weizhen/article/details/51920343鍩鍩鍩來源)
——考據:http://blog.csdn.net/mig_davidli/article/details/37507731

相關文章