直接取消引用和通过下标取消引用之间有区别吗?

时间:2019-07-13 14:19:22

标签: c++ arrays pointers char dereference

我试图在自定义字符串类上重载+运算符,但是当我使用下标而不是直接解引用指针时,当我在主函数上单击暂停时,最后会泄漏。

我已经多次运行调试器,但是结果是一样的,使用上面未注释的代码给我带来了泄漏,并且注释了一个作品。

MyString MyString::operator+(const MyString& s) {
MyString temp;
temp.sz = (sz + s.sz);
temp.ptr = new char[sz+1];
temp.ptr[temp.sz] = '\0';
for(int i = 0; i < sz; i++){
    temp.ptr[i] = ptr[i];
}
for (int i = sz; i < temp.sz; i++) {
    temp.ptr[i] = s.ptr[i-sz];
}
return temp;

/*MyString temp;
int size = strlen(ptr) + strlen(s.ptr);
temp.ptr = new char[size + 1];
*(temp.ptr + size) = '\0';
for (int i = 0; i < strlen(ptr); i++)
    *(temp.ptr + i) = *(ptr + i);
for (int i = 0; i < strlen(s.ptr); i++)
    *(temp.ptr + i + strlen(ptr)) = *(s.ptr + i);
return temp;*/

}

使用上面未注释的代码给我带来了泄漏,而注释过的代码却没有任何泄漏。

0 个答案:

没有答案