我试图在自定义字符串类上重载+运算符,但是当我使用下标而不是直接解引用指针时,当我在主函数上单击暂停时,最后会泄漏。
我已经多次运行调试器,但是结果是一样的,使用上面未注释的代码给我带来了泄漏,并且注释了一个作品。
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;*/
}
使用上面未注释的代码给我带来了泄漏,而注释过的代码却没有任何泄漏。