メモリ管理 : 文字配列と = 演算子
Q. メモリ管理に関して、次のコードでどのようなエラーが発生しますか?
class String
{
public:
String(const char right[]);
String& operator= (const String& right);
int length() const;
private:
char* buffer;
int len;
};
int String::length() const {return len;}
String::String(const char right[])
{
len = 0;
while (right[len] != '\0')
len++;
buffer = new char[len+1];
for (int i = 0; i < len; i++)
buffer[i] = right[i];
buffer[len] = '\0';
}
String& String::operator= (const String& right)
{
int n = right.length();
for (int i = 0; i <= n; i++)
buffer[i] = right.buffer[i];
return *this;
}
答え。手がかりがありません... 助けていただけますか?配列のサイズは大丈夫そうです...新しい演算子...削除演算子がないため、ポインタがぶら下がっているためですか?それとも3のルール?
助けていただければ幸いです。私にお知らせください。ありがとう、