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编译器释放的问题

  • 相关阅读:
    React + Webpack搭建环境
    iOS 中block中使用了外部变量的分析
    研究Extension和Category的一个例子
    43. Multiply Strings
    安装cocoapods
    iOS推送流程
    iOS中富文本NSMutableAttributedString的用法
    用杯赛尔曲线(做动画和绘图)
    字符串转换为长整型 strtol
    使用DirectUI
  • 原文地址:https://www.cnblogs.com/jilodream/p/4219798.html
Copyright © 2011-2022 走看看