运行出现Stack around the variable ’arr’ was corrupted.问题所在以及解决方法

本文主要是介绍运行出现Stack around the variable ’arr’ was corrupted.问题所在以及解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先来看一下我的代码: 

#include <stdio.h>
void bubbleSort(int arr1[], int len)
{for (int a = 0; a < len - 1; a++){for (int b = 0; b <= len - 1 - a; b++){if (arr1[b] > arr1[b + 1]){int temp = arr1[b];arr1[b] = arr1[b + 1];arr1[b + 1] = temp;}}}
}int main()
{int n = 0;int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};n = sizeof(arr) / sizeof(arr[0]);bubbleSort(arr, n);for (int m = 0; m < n; m++){printf("%d ", arr[m]);}return 0;
}

这个代码是用c语言写的冒泡排序。

下面是运行结果:

 接下来我们看一下Stack around the variable ’arr’ was corrupted的中文翻译:变量‘ arr’周围的堆栈已损坏

可以知道是栈周围出现了问题,这时我们应该着重看是否出现栈的溢出,仔细检查我们定义arr数组部分,可知系统给arr数组分配了10个整数的存储空间,arr[0~~9]。而在上面的代码中,问题出现在冒泡排序的内循环中,当b的值等于len - 1 - a时,系统会尝试访问arr1[b + 1],实例来说上述代码当a=0时,b的值为9,b+1就为10,那么在这次运行访问中系统就要访问arr[10]的空间,而我们定义的arr数组没有开辟arr[10]这一空间,这就对应着数组出现了越界访问。

修改的话就很简单了,把第六行的代码改成

for (int b = 0; b < len - 1 - a; b++)

即把 <= 改成 < 就OK了,下面是正确代码:

#include <stdio.h>
void bubbleSort(int arr1[], int len)
{for (int a = 0; a < len - 1; a++){for (int b = 0; b < len - 1 - a; b++){if (arr1[b] > arr1[b + 1]){int temp = arr1[b];arr1[b] = arr1[b + 1];arr1[b + 1] = temp;}}}
}int main()
{int n = 0;int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};n = sizeof(arr) / sizeof(arr[0]);bubbleSort(arr, n);for (int m = 0; m < n; m++){printf("%d ", arr[m]);}return 0;
}

希望对你有所帮助!

这篇关于运行出现Stack around the variable ’arr’ was corrupted.问题所在以及解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/221098

相关文章

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因: 1.文件编码不一致:如果文件的编码方式与IDEA设置的编码方式不一致,就会产生乱码。确保文件和IDEA使用相同的编码,通常是UTF-8。2.IDEA设置问题:检查IDEA的全局编码设置和项目编码设置是否正确。3.终端或控制台编码问题:如果你在终端或控制台看到乱码,可能是终端的编码设置问题。确保终端使用的是支持你的文件的编码方式。 2.解决方案: 1.File -> S

电脑不小心删除的文件怎么恢复?4个必备恢复方法!

“刚刚在对电脑里的某些垃圾文件进行清理时,我一不小心误删了比较重要的数据。这些误删的数据还有机会恢复吗?希望大家帮帮我,非常感谢!” 在这个数字化飞速发展的时代,电脑早已成为我们日常生活和工作中不可或缺的一部分。然而,就像生活中的小插曲一样,有时我们可能会在不经意间犯下一些小错误,比如不小心删除了重要的文件。 当那份文件消失在眼前,仿佛被时间吞噬,我们不禁会心生焦虑。但别担心,就像每个问题

eclipse运行springboot项目,找不到主类

解决办法尝试了很多种,下载sts压缩包行不通。最后解决办法如图: help--->Eclipse Marketplace--->Popular--->找到Spring Tools 3---->Installed。

22.手绘Spring DI运行时序图

1.依赖注入发生的时间 当Spring loC容器完成了 Bean定义资源的定位、载入和解析注册以后,loC容器中已经管理类Bean 定义的相关数据,但是此时loC容器还没有对所管理的Bean进行依赖注入,依赖注入在以下两种情况 发生: 、用户第一次调用getBean()方法时,loC容器触发依赖注入。 、当用户在配置文件中将<bean>元素配置了 lazy-init二false属性,即让

21.手绘Spring IOC运行时序图

1.再谈IOC与 DI IOC(lnversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让 容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们所看到的配置文件。 DI(Dependency Injection)依赖注入:就是指对象是被动接受依赖类

java中查看函数运行时间和cpu运行时间

android开发调查性能问题中有一个现象,函数的运行时间远低于cpu执行时间,因为函数运行期间线程可能包含等待操作。native层可以查看实际的cpu执行时间和函数执行时间。在java中如何实现? 借助AI得到了答案 import java.lang.management.ManagementFactory;import java.lang.management.Threa

vue同页面多路由懒加载-及可能存在问题的解决方式

先上图,再解释 图一是多路由页面,图二是路由文件。从图一可以看出每个router-view对应的name都不一样。从图二可以看出层路由对应的组件加载方式要跟图一中的name相对应,并且图二的路由层在跟图一对应的页面中要加上components层,多一个s结尾,里面的的方法名就是图一路由的name值,里面还可以照样用懒加载的方式。 页面上其他的路由在路由文件中也跟图二是一样的写法。 附送可能存在