代碼如圖,代碼實作的功能是拼接兩個字串。我在子函式中new了一個新空間用來存放拼接后的字串,但是在主函式delete時出現問題,請教一下各位應該如何才能正確delete掉申請的空間呢?
uj5u.com熱心網友回復:
char * stringcat(char *a1, char * a2)
{
char * s3 = new char[strlen(a1) + strlen(a2) + 1];
char *temp = s3;
while (*a1 != '\0') { *temp++ = *a1++; }
while (*a2 != '\0')*temp++= *a2++;
*temp++ = '\0';
return s3;
}
int main(int argc, char *argv[])
{
char *t1 = "abc";
char *t2 = "123";
char * tempstr;
tempstr = stringcat(t1, t2);
printf("%s", tempstr);
delete[]tempstr;
getchar();
return 0;
}
uj5u.com熱心網友回復:
把const去掉uj5u.com熱心網友回復:
你的演算法有問題,這句:s3[i+1]='\0';uj5u.com熱心網友回復:
你在區域函式宣告和new的空間,應該也是在區域函式釋放。建議改成:char *s;
char* stringCat(const char *s1,const char *s2)
{
s = new char[strlen(a1) + strlen(a2) + 1];
....
}
int main(int argc, char *argv[])
{
....
delete[] s;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/88718.html
標籤:C++ 語言
下一篇:c語言程式停止作業,求教!
