首页 > 其他分享 >C中遇到一个诡异的死循环

C中遇到一个诡异的死循环

时间:2023-07-18 17:13:06浏览次数:34  
标签:10 arr 12 遇到 int 13 诡异 死循环

下面是其代码:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int main()
 4 {
 5     int i = 0;
 6     //int j = 0;
 7     int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
 8     for (i = 0; i <= 12; i++)
 9     {
10         printf("hello\n");
11         arr[i] = 0;
12     
13     }
14     system("pause");
15     return 0;
16 }

代码运行结果应该是换行打印13个hello,但是程序运行后发现程序进行死循环,无限打印hello.

经过调试发现当i==12的时候,再进行循环判断的时候i的值突然变成0了

 

当i==12运行完循环时,应该是返回判断语句变成i==13,退出循环,而这时却是i突然等于0,而陷入死循环

 

这时arr数组内元素都赋值成0了,但循环又重新开始了

经过排查,如果注释掉 //arr[i]=0;发现程序能正确输出结果,判断原因是不是数组越界访问造成的问题

经过在监视窗口中加入arr[10],a[11],arr[12]和查看i和arr[12]的地址发现了问题

越界访问的arr数组第13位置的时候,系统分配的位置,居然是系统给i变量分配的地址,两个地址是一样的,这才是造成死循环的原因

这时也体会到非法访问内存 的弊端,会造成莫名其妙的错误 。还有发现系统给局部变量开辟内存的时候喜欢分配比较相邻的内存单元

这段带码在声明i变量时,就是在第6行加上一句int j=0;也可以避开这个死循环,改变系统分配内存的位置

标签:10,arr,12,遇到,int,13,诡异,死循环
From: https://www.cnblogs.com/cshu21/p/17563495.html

相关文章

  • print response.text 打印网页返回内容时遇到丢失内容的情况\r
    在学习过程中,遇到一个小说网站:h@t@t@p@s@:@/@/@w@w@w@.@i@b@i@q@u@g@e@s@.@c@o@m@/@1@/@1@7@1@0@/@1@2@9@8@2@6@6@.@h@t@m@l@get后,printtext内容,发现中间小说内容部分没了,而这部分内容正是想要获取的,难道一个小说网站(很普通的网站)反pa也这么厉害(网页源代码中是有的)?于是加cookie......
  • python遇到空格就换行
    Python遇到空格就换行引言大家好,我是一名经验丰富的开发者,今天来教大家如何实现“Python遇到空格就换行”的功能。这对于刚入行的小白来说可能有些困惑,但我将会一步一步地给大家讲解如何实现这个需求。整体流程首先,让我们来看看实现这个功能的整体流程。下表展示了我们需要完成......
  • linux搭建code-server及使用中遇到的问题
    系统环境CentOS8.5docker搭建linux不太熟,但是用docker搭建是真的简单,有现成的镜像的话一句命令就可以搞定。dockerrun-itd--namemy-code-server\-p5580:8080\-v/data/mycode:/home/coder\-ePASSWORD=12345678\codercom/code-server:latest--authpassword......
  • 遇到了一个需要java生成二维码,支持扫码枪扫描的需求
    1,需求是生产二维码,加入到正文和表单中2,首先能生成二维码,其次就是把二维码插入到表单和正文了,插入到表单设计到一些前端知识暂不分享3,把二维码插入正文,正文是用的word文档,后续分享如何操作 生成二维码的样式应该是pdf417这种码,而不是qrcode普通的二维码#需要引入依赖jar包......
  • 我遇到的hadoop错误和解决方法汇总
     ==================================windowscygwin环境下,遇到这个错误:org.apache.hadoop.security.AccessControlException:Permissiondenied:user=cyg_server,access=EXECUTE,inode="job_201010161322_0003":heipark:supergroup:rwx------ 解决:刚开始还使用“./bin/hadoo......
  • 遇到问题一定要学会看日志
    如果你生病了到医院,医生首先会问你哪里不舒服,然后通过你的描述来确认病情,如果还无法确认就得让你去验血或者拍片。最后根据结果来进一步确认你到底有什么病。这个道理大家都明白,其实作为一个运维人,服务器在我们眼里就是我们的病人,而我们就是给它看病的医生。如何确认病情?我们自然......
  • springboot下遇到的跨域问题
    后端跨域处理springboot项目注解@CrossOrigin实现WebMvcConfigurer接口中addCorsMappings(CorsRegistryregistry)方法配置CorsFilterfilter过滤器使用注意都可以单独使用,全部配置可能会导致不生效的问题addCorsMappings方法@Overridepublic......
  • ubuntu22.04安装vsftp遇到的问题
    问题FileZilla连接文件服务器时出现”无法读取文件目录“,随后出现“20秒后无活动,连接超时”、“无法连接到服务器”文件目录无法读取的问题。该问题的出现是因为防火墙关闭导致数据包无法通过,进而无法显示文件目录。解决办法:1、开启服务器防火墙sudoufwallow20:21/tcpsu......
  • elementUI远程搜索功能遇到的坑(el-autocomplete) 如果是提前加载出全量数据 去掉v-mode
    elementUI远程搜索功能遇到的坑(el-autocomplete)如果是提前加载出全量数据去掉v-model.trim换为v-model=“nameinputvalue”原文链接:https://blog.csdn.net/CuiCui_web/article/details/95939746本文主要是解决下拉框根据返回值隐藏   动态设置建议列表值等问题结构写......
  • mosquitto遇到严重错误时会退出循环
    while(run){ do{ rc=mosquitto_loop(mosq,timeout,max_packets); }while(run&&rc==MOSQ_ERR_SUCCESS); /*Quitafterfatalerrors.*/ switch(rc){ caseMOSQ_ERR_NOMEM: caseMOSQ_ERR_PROTOCOL: caseMOSQ_ERR_INVAL: caseMOSQ_ERR_NOT_FO......