调试断言失败! (c++)

debug assertion failed! (c++)

我正在尝试创建一个程序来分析输入的单词以查看它是否是回文。

我正在一点一点地做这件事,这是我目前的代码:

#include <iostream>
#include <string>

using namespace std;

int main(string word) {
cout << "Word: ";
cin >> word;
bool x = true;
int length = word.length();
int k = length;
    int y = 0;
    for (int i = length-1; i >= 0; i--) {
            int j = k - 1;
            int l = i - j;
            char a = word[i];
            char b = word[l];
            cout << "a: " << a << "     b: " << b << endl;
            k = k - 2;
    }
    return 0;
}

它产生了我想要的输出:

Word: marcus
a: s       b: m
a: u       b: a
a: c       b: r
a: r       b: c
a: a       b: u
a: m       b: s

但每次我 运行 它都会给我这个错误:

Debug Assertion Failed! Line: 106

Expression: "(_Ptr_user & (_BIG_ALLOCATION_ALIGNMENT - 1))) == 0" && 0

我做错了什么?

首先,main 没有string 类型的参数。在函数体内做一个声明:

int main() {
    std::string word;

还有一些建议:该代码非常混乱!目标是遍历输入字符串并显示相应的字符,所以就这样做吧。对于位置i的字符,从字符串后面开始对应的索引是word.length() - 1 - i。从以这种方式编写它开始,并确保它有效。然后可能将 word.length() 存储在一个单独的变量中。除此之外,更多的变量只会让我们更难看到正在发生的事情,并且不会让代码变得更好。

cin >> word;

结合 main() 的无效参数签名:

int main(string word) {
      // ^^^^^^

从 OS 依赖绑定代码中搞砸了 main() 函数的调用堆栈。

这就是您收到调试断言错误的原因。