在c語言中,變數在宣告時,並不會對變數對應記憶體區域進行清理操作。此時,變數值可能是完全不可預期的結果。開發者需要習慣在使用c語言進行宣告時要初始化操作,稍有不慎,就會造成不可預知的後果。
在網路上只有程式設計師才能看懂的「燙燙燙」和「屯屯屯」的梗,就**於c/c++中變數預設不初始化。
微軟的 vc 編譯器會將未初始化的棧空間以 16 進製的 0xcc 填充,而未初始化的堆空間使用 0xcd 填充,而0xcccc 和 0xcdcd 在中文的 gb2312 編碼中剛好對應「燙」和「屯」字。
因此,如果乙個字串沒有結束符\0,直接輸出的記憶體資料轉換為字串就剛好對應「燙燙燙」和「屯屯屯」。
有趣的「燙燙燙燙」和「屯屯屯屯」
相信在vc下除錯過 的同學都遇到過這種情況,想看乙個字串的值,結果發現顯示的是一串長長的 燙燙燙燙燙燙燙燙 或 屯屯屯屯屯屯屯屯屯屯屯 囧!在visual studio中的debug模式下,如果宣告乙個變數,但是沒有初始化,微軟會給未初始化的記憶體複製為0xcc。給為初始化的記憶體賦0xcc是有原因...
經典亂碼「燙燙燙」和「屯屯屯」
經典亂碼 燙燙燙 和 屯屯屯 程式猿有個經典的內部笑話 手持兩把錕斤拷,口中疾呼燙燙燙。燙燙燙和屯屯屯產生自vc,這是debug模式下vc對記憶體的初始化操作。vc會把棧中新分配的記憶體初始化為0xcc,而把堆中新分配的記憶體初始化為0xcd。0xcc恰好是終端指令int 3,算是保護嗎?把0xcc...
周易六十四卦 屯卦
乾卦,坤卦,天,地,這都是自然的現象,第三個卦不是天不是地,而是天地開始相交,陰陽交合,生命出現的徵兆。屯卦,面臨困境的智慧型。屯這個字,就是一顆豆芽,上面還頂著蓋子,代表的是生命萌發的狀態。得到這個卦的時候,意味著這件事情處在乙個初始狀態,哪怕日後會長成參天大樹,但是目前來說,就是乙個自己非常微弱...