#include<iostream>
#include<string>
using namespace std;
string version1(const string& s1, const string& s2)
{
string temp;
temp = s2 + s1 + s2;
return temp;
}
const string& version2(string& s1, const string& s2)
{
s1 = s2 + s1 + s2;
return s1;
}
const string& version3(const string& s1, const string& s2)
{
string temp;
temp = s2 + s1 + s2;
return temp;
}
int main()
{
using namespace std;
string input, copy, result;
cout << "Enter a string:";
cin >> input;
copy = input;
cout << "your input string is: " << input << endl;
result = version1(input, "***");
cout << "version1: " << result << endl << endl;
cout << "Enter a string:";
copy = input;
cout << "your input string is: " << input << endl;
result = version2(input, "@@@");
cout << "version1: " << result << endl << endl;
cout << "Enter a string:";
copy = input;
cout << "your input string is: " << input << endl;
result = version3(input, "###");
cout << "version1: " << result << endl << endl;
}
程序运行到 result = version3(input, “###”);
就会出现崩溃,因为temp只在version3运行时存在,运行完后就会被释放掉,
即程序试图引用已经释放的内存