delete [] str出错!
程序代码如下所示:
class String
{
char *str;
int len;
public:
String(int length = 0);
String(const char*);
virtual ~String();
char* show() const;
};
String::String(int length)
{
len = length;
str = new char(len + 1);
if (str == NULL) exit(1);
str[0] = 0;
}
String::String(const char* s)
{
len = strlen(s);
str = new char(len + 1);
if (str == NULL) exit(1);
strcpy(str,s);
}
char* String::show() const
{
return str;
}
String::~String()
{
delete [] str;
}
void main() {
String u("This is a test");
cout << " u = " << u.show() << endl;
}
This is a test能正确显示出来,但进入析构函数delete [] str;时出错!请高手帮忙解决该问题
问题点数:30、回复次数:1Top
1 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2006-03-21 12:53:18 得分 30
str = new char(len + 1);
----------------
圆括号和方括号是不一样的语法
申请数组应该改为
str = new char[len + 1];
其他的照着改~
Top




