字符串重载加号 急求纠错

C++语言 码拜 8年前 (2016-04-26) 699次浏览
myString operator+(const myString &s1,const myString &s2)
{
int num,i,j;
num=s1.len+s2.len;
myString s3;
s3.len=num;
s3.start=new char [num];
strcpy(s3.start, s1.start);
strcat(s3.start, s2.start);
return s3;
}
为什么return s3时会出错?
解决方案

5

估计是你复制时越界了,num有没有考虑最后的\0字符

10

很明显越界,字符串最后都有一个‘\0″

50

你错误的地方在构造函数里,越界了,破坏了堆空间,导致析构的时候出错
start=new char [strlen(x)];改为start=new char [strlen(x)+1];

myString::myString(const char *x)
{
	start=new char [strlen(x)+1];
	int i; 
	for(i=0;i<strlen(x);i++)
	{
		start[i]=x[i];
	}
	start[i]="\0";
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明字符串重载加号 急求纠错
喜欢 (0)
[1034331897@qq.com]
分享 (0)