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 开始;

三.猜你喜欢

  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 语言 数组内存溢出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BugkuCTF-MISC题乌云邀请码

下载文件&#xff0c;解压后得到一张图片 方法一&#xff1a; 通过zsteg直接得到flag 方法二&#xff1a; 放入Stegsolve查看 发现红绿蓝plane0 的最上边都有一排小黑点儿&#xff0c;很可疑 选择Analyse 的Data Extract进行分析 勾选红绿蓝的0层&#xff0c;选BGR模式&…

趣挨踢 | 关于遗留代码的那些事儿

戳蓝字“CSDN云计算”关注我们哦&#xff01;来自&#xff1a;程序员最幽默&#xff08;ID&#xff1a;humor1024&#xff09;【1】当我不小心打开了遗留代码&#xff0c;世界从我眼前消失了。【2】当我试图破译遗留代码的时候【3】当我尝试修复遗留代码&#xff0c;却永远找不…

全网最细之super讲解

1.super调用父类构造方法且必须出现在方法内第一行 2.super必须只能出现在子类的方法或者构造方法中 3.super和this不能同时存在 vs this: 代表的对象不同&#xff1a; this&#xff1a;本身 super&#xff1a;父类 前提&#xff1a; this:没有继续也可以使用 super&a…

C语言 数组下标越界和内存溢出区别 - C语言零基础入门教程

目录 一.数组下标越界和内存溢出简介二.数组下标越界和内存溢出区别三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.数组下标越界和内存溢出简介 **溢出本义是算术溢出(arithmetic overflow)&#xff0c;**指算术计算结果无法在一定范围内表…

重写详细讲解

重写&#xff1a;需要有继承关系&#xff0c;子类重写父类的方法&#xff01; 1.方法名必须相同 2.参数列表必须相同 3.修饰符&#xff1a;范围可以扩大但不能缩小&#xff1a;public>protected>default>private 4.抛出异常&#xff1a;范围可以被缩小&#xff0c…

云计算演进历程与模式 - 初识云计算知识专栏(2)

戳蓝字“CSDN云计算”关注我们哦&#xff01;云计算演进历程云计算产生背景云计算的产生是需求推动、技术进步、商业模式转变共同促进的结果。需求推动指的是政企客户低成本且高性能的信息化需求&#xff1b;人用户的互联网、移动互联网应用需求强烈&#xff0c;追求更好用户体…

BugkuCTF-MISC题细心的大象

下载文件file.zip 直接解压出错&#xff0c;通过binwalk -e file.zip分离出文件夹_file.zip.extracted 得到一张图片&#xff0c;通过binwalk -e 1.jpg分离出文件夹_1.jpg.extracted 得到.rar压缩包&#xff0c;打开需要密码&#xff0c;通过爆破找不到密码 查看1.jpg图片属性&…

C语言 数组长度计算 - C语言零基础入门教程

目录 一.计算数组长度 1.经典案例2.计算数组长度 二.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.计算数组长度 1.经典案例 /******************************************************************************************/ //Author:猿说…

BugkuCTF-MISC题想蹭网先解开密码

下载文件wifi.cap 先通过crunch命令先生成字典 crunch 11 11 -t 1391040%%%% -o password.txt 输入aircrack-ng wifi.cap 输入3&#xff0c;因为第三个存在握手包 输入aircrack-ng -e D-Link_DIR-600A -b BC:F6:85:9E:4E:A3 -w /root/文档/CTF题目/CTF02/MISC/想蹭网先解开密…

云要闻 | 华为助力5G;青云云资源价格全面下调;神州数码签订云计算服务合同

戳蓝字“CSDN云计算”关注我们哦&#xff01;Hello&#xff0c;everyone&#xff1a;1月7日&#xff0c;星期一CSDN云要闻时间&#xff1a;嗨&#xff0c;大家好&#xff0c;偶是“CSDN 云计算”微信公众号新晋成员一枚&#xff0c;人称“要闻君”。精神满满的周一&#xff0c;…

C语言 十进制和十六进制相互转换 - C语言零基础入门教程

目录 一.十进制和十六进制区别 1、基数不同2、有效字符不同3、用途不同 二.十进制转十六进制三.十六进制转十进制四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.十进制和十六进制区别 1、基数不同 十进制满10进1&#xff1b; 十六进制满F…

多态详细讲解

1.多态是方法的多态&#xff0c;属性没有多态 2.父类和子类有联系&#xff0c;类型转换异常&#xff01;classcastexception 3.存在条件&#xff0c;继承关系&#xff0c;方法需要重写&#xff0c;父类引用指向子类对象Father f1new Son&#xff08;&#xff09;&#xff1b;…

BugkuCTF-MISC题旋转跳跃

先下载解压&#xff0c;尝试播放 既然是mp3&#xff0c;那么先尝试拉入Audacity 没发现啥&#xff0c;仔细看了看题目注释&#xff0c;发现给了个KEY 打开mp3stego-gui的根目录 在终端输入wine Decode.exe -X -P syclovergeek sycgeek-mp3.mp3 (wine为在linux打开exe文件) 会…

有问有答 | 算法和数据结构精华问答

戳蓝字“CSDN云计算”关注我们哦&#xff01;所有的算法&#xff0c;乃至数学在实际运用中都是要根据不同的数据来选择不同的方法&#xff0c;所以一般学习过算法和数据结构的人都会越发的认识到&#xff0c;数据才是程序的中心&#xff0c;只有找到了一个组织数据的最佳方式&a…

全网最细之instanceof和类型转换

package com.wuming.oop4.demo08;public class Application {public static void main(String[] args) {//类型之间转换&#xff1a;父 子//高 低Person person1 new Student();//student将这个对象转换为student类型&#xff0c;我们就可以使用student…

C语言 十进制和八进制相互转换 - C语言零基础入门教程

目录 一.十进制和八进制区别 1、基数不同2、有效字符不同3、用途不同 二.十进制转八进制三.八进制转十进制四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.十进制和八进制区别 1、基数不同 十进制满10进1&#xff1b; 八进制满8进1&#x…

BugkuCTF-MISC题一切有为法如梦幻泡影

下载文件 从Zero.png里foremost分离出一个压缩包&#xff0c;解压得到问.png 没有得到 《察》.zip 密码的提示&#xff0c;所以爆破得到密码42&#xff0c;解压得到这两个文件 先分析one.png&#xff0c;foremost分离出压缩包&#xff0c;解压得到感.png&#xff0c;同样也没…

C语言 十进制和二进制相互转换 - C语言零基础入门教程

目录 一.十进制和二进制区别 1、基数不同2、有效字符不同3、用途不同 二.十进制转二进制三.二进制转十进制四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.十进制和二进制区别 1、基数不同 十进制满10进1&#xff1b;二进制满2进1&#xf…

细数阿里达摩院2019年的十个Flag

戳蓝字“CSDN云计算”关注我们哦&#xff01;来自&#xff1a;人工智能与大数据作者&#xff1a;AI小哥1月2日&#xff0c;阿里达摩院发布《2019十大科技趋势》&#xff0c;在未来的一年&#xff0c;科技领域究竟会再次迎来春天&#xff0c;还是继续在寒冬中前行&#xff0c;达…

全网最细之static关键字讲解

package com.wuming.oop.demo07;public class Person {//2:赋初值{System.out.println("匿名代码块");}//1&#xff1a;只执行一次static{System.out.println("静态代码块");}//3public Person() {System.out.println("构造方法");}public stati…