tft每日頭條

 > 圖文

 > 屯屯交朋友怎麼樣

屯屯交朋友怎麼樣

圖文 更新时间:2024-12-24 01:26:25

屯屯交朋友怎麼樣?在 Windows 上用 VC6 或者 VS 做過 C\C 開發的人都見過這些個有點奇怪并且還略帶搞笑的字眼,接下來我們就來聊聊關于屯屯交朋友怎麼樣?以下内容大家不妨參考一二希望能幫到您!

屯屯交朋友怎麼樣(燙燙燙燙燙燙屯屯屯屯屯屯)1

屯屯交朋友怎麼樣

在 Windows 上用 VC6 或者 VS 做過 C\C 開發的人都見過這些個有點奇怪并且還略帶搞笑的字眼。

"燙燙燙燙燙燙燙燙燙燙燙燙燙燙燙"

"屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯"

很多初學者雖然經常遇到,但是并不知道這是什麼梗。

其實 “燙” 和 “屯” 都是按照 GBK 編碼顯示的結果,對應的十六進制分别為 0xcccc, 0xcdcd 。

這是微軟 C\C 編譯器在 debug 模式下,引入的一種内存保護機制,會給特定的内存賦一個特定的初值。

具體怎麼賦值,賦一個什麼值呢? 我來列舉一下常見的幾種。

1. 0XCC

未被初始化的棧内存,會被寫入 0XCC 。

例:

2. 0XCD

未被初始化的堆内存,會被寫入 0XCD

例:

這裡 d 的值為 0x00CA56B8, 可以看出,它指向的内存為cdcdcd...

這裡 e 的值為 0x00C45468, 可以看出,它指向的内存也為cdcdcd...

3. 0XFD

堆内存的周圍(前後各 4 個 Byte),會被寫入 0XFD

這個區域被稱為 “無人區”,寫入 0XFD, 相當于是加了 Fence,用于檢測數組越界。

還是前面的例子。

4. 0XDD

被銷毀的堆内存,會被寫入 0XDD 。

除了上面的這些,還有一些特定字符會被用到,如 0XBAADFOOD, 0XABABABAB, 0XFEEEFEEE, 0XDEADBEEF 等,因為不常出現,這裡就不細說了。

微軟之所以這麼做,除了内存保護,我想還為了調試方便,給它們一個确定的值而不是随機值,這樣可以每次運行都是相同的結果。

說了這麼多,隻是想讓大家理解編譯器的行為。

當然,不同的編譯器,會有不同的行為,例如 gcc, 就不會給未初始化的變量賦初值,一切都是随機的。

最後,提醒大家

一定不要忘記初始化變量

new\delete, malloc\free 配套使用

delete\free 之後,要讓指針為 null

警惕數組越界

避免野指針

========題外話=========

附上大家關心的段子吧。

手持兩把锟斤拷, (GBK與UTF-8)

口中疾呼燙燙燙。(VC )

腳踏千朵屯屯屯, (VC )

笑看萬物锘锘锘。(HTML)

我來解說一下,其實也隻有 燙燙燙屯屯屯是微軟編譯器搞出來的,锟斤拷锘锘锘 實際上是編碼字符集轉換問題。

你把 锟斤拷锘锘锘 也歸為微軟編譯器惹的禍?

微軟編譯器表示這個鍋我不背。

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved