そのため、C++ で OOP を学んでいて、独自の文字列クラスを作成するのは良い習慣だと思いました (もちろん、学習目的で)。解き方が分からない問題が出てきました。コードの平和は次のとおりです。
class String {
char *str;
public:
String(char const *str);
~String();
String operator + (char const *str);
};
String::String(char *str) {
this->str = _strdup(str);
}
String::~String() {
free(this->str);
}
String String::operator+(char const *str) {
char *temp = (char *) malloc(strlen(str) + strlen(this->str) + 1);
strcpy(temp, this->str);
strcat(temp, str);
return temp;
}
ここでの問題は、このコードによってメモリ リークが発生することです。「演算子 +」から戻ると、コンストラクターが呼び出されます。コンストラクターは、より多くのメモリを割り当てて temp をコピーしますが、それを解放する方法が見つかりませんでした。