C语言 数组内存溢出 - C语言零基础入门教程
生活随笔
收集整理的這篇文章主要介紹了
C语言 数组内存溢出 - C语言零基础入门教程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 一.數組內存溢出簡介
- 二.數組內存溢出實例
- 三.猜你喜歡
零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門
一.數組內存溢出簡介
溢出:想象一個桶,桶的容積是有限的,你裝滿了水以后,如何還要往里面裝,那么水就溢出到地面了。
C 語言中的溢出和這個原理一樣,桶的容積就表示你定義的某一數據的內存大小,往里面寫入數據就表示在裝水。
案例一:一個計時器,最大計 100s 的時,你讓他跑了 120 秒,它就溢出了;
案例二:兩個 unsignedchar,一個200,一個也是200,相加,結果也就溢出,因為 unsignedchar 最大就 255 ;
二.數組內存溢出實例
/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:C語言教程 - C語言 數組內存溢出 //@Time:2021/06/10 08:00 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************/#include<stdlib.h> #include<stdio.h> void main() {unsigned char a[3] = {0};a[0] = 200;a[1] = 200;a[2] = a[0] + a[1]; //unsigned char 取值范圍:0~255 ,超出取值范圍printf("a:%d b:%d c:%d\n", a[0], a[1], a[2]);system("pause"); } /* 輸出: a:200 b:200 c:144 請按任意鍵繼續. . . */在C語言中unsignedchar無符號字符類型取值范圍是0~255,很明顯a[2]=400,超出取值范圍,內存溢出!為什么a[2]=144?
當如果 unsignedchar 變量超過 255之 后,默認又繼續重 0 開始計算,例如:[int](https://www.codersrc.com/archives/7409.html) 類型 和 unsignedchar類型轉換:
int類型 和 unsigned char類型轉換int unsigned char254 254255 255256 0257 1258 2... ...399 143400 144// 400 - 255 = 144在取值 0~255 的時候,int 和當如果 unsignedchar 一樣,當超出 255 之后,當如果 unsignedchar 繼續重 0 開始;
三.猜你喜歡
未經允許不得轉載:猿說編程 ? C 語言 數組內存溢出
總結
以上是生活随笔為你收集整理的C语言 数组内存溢出 - C语言零基础入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言逻辑运算符 - C语言零基础入门教
- 下一篇: jq之attr()