【发布时间】:2013-04-23 04:30:52
【问题描述】:
内存管理:使用 new 运算符的数组和动态分配
问。在内存管理方面,会出现什么错误?
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)
{
if (this != &right)
{
delete[] buffer;
len = right.length();
char* buffer = new char[len + 1];
for (int i = 0; i < len; i++)
buffer[i] = right[i];
buffer[len] = '\0';
}
return *this;
}
回答。 我不知道...你能帮帮我吗? 这个好像也还行。 新的,它也被删除了。 内存泄漏在哪里?
请告诉我。 谢谢,
【问题讨论】:
-
你有什么问题?你遇到了什么错误?
-
除了所有的答案,你应该永远记住一件事:如果你使用运算符
new,你应该在某个地方使用运算符delete。
标签: c++ memory-management memory-leaks assignment-operator