zoukankan      html  css  js  c++  java
  • 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个字符 按道理是没错的。

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

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

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

  • 相关阅读:
    08:特殊日历计算
    07:玛雅历
    Vigenère密码
    openjudge 螺旋加密
    C#遍历指定文件夹中的所有文件和子文件夹
    确定两串乱序同构
    方阵原地顺时针旋转90度
    05:统计单词数【NOIP2011复赛普及组第二题】
    牛客网一道趣味题
    二分查找的平均查找长度详解【转】
  • 原文地址:https://www.cnblogs.com/jilodream/p/4219798.html
Copyright © 2011-2022 走看看