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 char
     254      254
     255      255
     256      0
     257      1
     258      2
     ...      ...
     399      143
     400      144
  // 400 - 255 = 144

在取值 0~255 的時候,int 和當如果 unsignedchar 一樣,當超出 255 之后,當如果 unsignedchar 繼續重 0 開始;

三.猜你喜歡

  1. 安裝 Visual Studio
  2. 安裝 Visual Studio 插件 Visual Assist
  3. Visual Studio 2008 卸載
  4. Visual Studio 2003/2015 卸載
  5. C 語言格式控制符/占位符
  6. C 語言邏輯運算符
  7. C 語言三目運算符
  8. C 語言逗號表達式
  9. C 語言 sizeof 和 strlen 函數區別
  10. C 語言 strcpy 和 strcpy_s 函數區別
  11. C 語言 memcpy 和 memcpy_s 區別
  12. C 語言 數組定義和使用
  13. C 語言 數組遍歷
  14. C 語言 數組排序 – 冒泡法排序
  15. C 語言 數組排序 – 選擇法排序
  16. C 語言 數組排序 – 插入法排序
  17. C 語言 數組排序 – 快速法排序
  18. C 語言 數組下標越界
  19. C 語言 數組內存溢出

未經允許不得轉載:猿說編程 » C 語言 數組內存溢出

本文由博客 - 猿說編程 猿說編程 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM