c - 这是什么意思,我该如何纠正它 *** 检测到堆栈粉碎 *** : ./array1outpu

这是代码。为什么我会遇到这个错误,我应该引用什么信息来源来纠正这些错误,这样我才能知道“如果我这样做,我会得到 'x' 错误”

#include<stdio.h>
void main()
{
   int i,avg,sum;
   int marks[30]; // Array declaration

   for(i=0;i<31;i++)
   {
      printf("Enter Marks:");
      scanf("%d",&marks[i]); // Stores data in Array
   }

   for(i=0;i<31;i++)
      sum=sum+marks[i];

   avg=sum/30;
   printf("Average marks of student \t %d",avg);
}

最佳答案

每当您在函数中声明一个变量时,它都会在堆栈上分配内存。堆栈是一个保留的内存区域,用于在函数内进行临时数据操作。现在在您的代码中声明 3 int s 和一组 int有 30 个插槽。在你的for循环你将 31 个整数放入 30 个槽中;从 0 到 30 是 31 个数字。最后一个数字被放置在第 30 个插槽之外,因此“粉碎”到堆栈的下一个位置,换句话说就是覆盖它。解决办法是改变你for循环到 for(i=0;i<30;i++) .

关于c - 这是什么意思,我该如何纠正它 *** 检测到堆栈粉碎 *** : ./array1output 终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41421031/

相关文章:

visual-studio - 如何在 Visual Studio 2015(对于 C++)中仅禁用

haskell - Machines 和 Conduits(或其他类似库)之间的概念区别是什么?

css - 由于非整数宽度,媒体查询运行异常

macos - 如何使用 xhyve 从主机中删除 Minikube 主机路径目录?

c - 这个函数被认为是可重入的吗?

python-3.x - 模块 'urllib' 没有属性 'request'

pointers - SGX - 受信任的网桥和受信任的代理有什么区别?

sandbox - 转移 Mac App Store 应用程序

spring-mvc - 处理 org.thymeleaf.exceptions.TemplateI

datetime - 如何在Lua中的给定日期时间添加天数