小编Arn*_*nas的帖子

避免内存泄漏

所以我在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;
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是,这段代码会导致内存泄漏.从"operator +"返回调用我的构造函数,它通过分配更多的内存来复制temp,我找不到任何方法可以释放它.

c++ memory oop memory-leaks

2
推荐指数
1
解决办法
195
查看次数

标签 统计

c++ ×1

memory ×1

memory-leaks ×1

oop ×1