调试断言失败! (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()
函数的调用堆栈。
这就是您收到调试断言错误的原因。
我正在尝试创建一个程序来分析输入的单词以查看它是否是回文。
我正在一点一点地做这件事,这是我目前的代码:
#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()
函数的调用堆栈。
这就是您收到调试断言错误的原因。