gpt4 book ai didi

c++ - 异常显示错误

转载 作者:行者123 更新时间:2023-11-27 23:19:38 26 4
gpt4 key购买 nike

晚上好。对不起,我不能更准确地说明这个问题。

以下代码不显示任何内容,除非:

<强>1。我在开头推迟了三个未使用的注释行,它们不会造成任何形式的冲突。

<强>2。除非我在 main() 中将“Hello”更改为“Hello world”。

我使用的是 codeblocks 10.05。

完整代码:

#include <iostream>
using namespace std;

class stringclass
{
protected :

inline bool success() { failbit = false; return true; } //line to ignore
inline bool fail() { failbit = true; return false; } //line to ignore

public :

bool failbit; //line to ignore

char * mystring;
long memsize;
long length;

void reset();
void alloc(long newsize);

void copy(const stringclass & other);

stringclass(const char str[]);
stringclass() {reset(); }
stringclass(const stringclass & other) {copy(other); }
~stringclass() {delete [] mystring;}

friend ostream& operator << (ostream& out, stringclass & obj) {out << obj.mystring; return out;}

};

void stringclass::reset()
{
delete [] mystring;
mystring = NULL;
length = 0;
memsize = 0;
}

void stringclass::alloc(long newsize)
{
delete [] mystring;

mystring = new char[newsize];

memsize = newsize;
mystring[0] = 0;
length = 0;
}

void stringclass::copy(const stringclass & other)
{
if(other.mystring == NULL) reset();
else
{
alloc(other.memsize);
strcpy(mystring, other.mystring);
length = strlen(mystring);
}
}

stringclass::stringclass(const char str[])
: mystring(NULL), memsize(0), length(0)
{
if(str == NULL) reset();
else
{
alloc(strlen(str) + 1);
strcpy(mystring, str);
length = strlen(mystring);
}
}

int main()
{
stringclass str = "Hello";
stringclass str2 = str;

cout << "str = " << str << endl;
cout << "str2 = " << str2 << endl;
cout << endl;

system("PAUSE");
return 0;
}

代码显示:

str =
str2 =

Press any key to continue...

代码更改后 1. :

str = Hello
str2 = Hello

Press any key to continue...

代码更改后 2. :

str = Hello world
str2 = Hello world

Press any key to continue...

最佳答案

我刚刚尝试运行它,但遇到了段错误。

阅读你的代码——你不确定你的字符串是否以 null 结尾。 strcpy() 和 strlen() 期望字符串以空值终止。那肯定会导致随机行为。我运行了你的代码,出现了段错误——打印时长度是垃圾值。这很可能是您的问题。

关于c++ - 异常显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14184310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com