C语言 在VS环境下一个很有意思的报错:stack around the variable was corrupted

今天做一个很简单的oj来温习下c 语言  

题目如下

输入

3位正整数

输出

逆置后的正整数

代码如下:

 

#include"stdio.h"
int main()
{
 float h,sum;int inputCount;int n;
 char input[3];
 scanf("%s",&input);n=2;
 while(n>=0)
 {
  if(n==2&&input[n]=='0')
  {
   n--;
   continue;
  }
  if(n==1&&input[n]=='0'&&input[2]=='0')
  {
   n--;
   continue;
  }
  printf("%c",input[n]);
  n--;
 }
 return 0;
}

结果用vs 调试的时候总是在程序结束的时候报错(在return 0;之后)

错误如下:

stack around the variable was corrupted(翻译为:在变量XX周围的堆栈已损坏)

 

 

 

我以为越界了,检查了一下 都没有越界啊,然后网上查了下,貌似答复都是挺奇怪的,还要修改数组默认值什么的。

于是自己就一步步的注释方法 最终锁定在

   char input[3];
 scanf("%s",&input); 

因为我给这个数组 赋值了3个字符 按道理是没错的。

可是在函数结束时,释放数组内存时  发现结尾居然没有'\0' 

所以报错了。至于他是如何判断的  就不太清楚了

放到oj上跑了一遍 是AC   应该是VS编译器释放的问题

 

posted @   王若伊_恩赐解脱  阅读(7862)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

点击右上角即可分享
微信分享提示