运行时检查失败#2 - 变量'a'周围的堆栈已损坏

时间:2013-11-27 22:37:22

标签: c++ stack runtime-error

我无法理解为什么我在这里收到错误。 我假设它可能与尝试访问数组中不存在的地方有关? (虽然我无法看到我在做什么) 程序运行时,它将返回正确的答案,但随后关闭运行时错误。非常感谢您在将来避免这些问题的任何帮助和一般建议。感谢

int len(char s[]){
        int len = 0;
        while (s[len] != 0) len++;
        return len;
    }

int isPalindorme(char s[]){
    int length = len(s);
    int limit = length / 2.0 + 0.5;
    for (int i = 0; i < limit; i++){
        if (s[i] != s[length - i -1]){
            return 0;
        }
    }
    return 1;
}

void main(){
    char a[] = "";
    cin >> a;
    cout << len(a) << endl;
    cout << isPalindorme(a);

}

1 个答案:

答案 0 :(得分:2)

a指向大小仅为1个字节的缓冲区(空终止符),因此cin在将数据复制到该地址时会丢弃堆栈。

你应该使用std::string代替(或者让你的缓冲区更大)。