Xcode выдает ошибку (C++)

malloc: *** error for object 0x1005ae750: pointer being freed was not allocated

Создал класс string, реализовал операцию присваивания, и когда начинаю тестировать , то ругается компилятор, и показывает на деструктор. Помогите, буду благодарен

#include "String.h"
String :: String (const char *str) {
    size = sizeof(str) +1;
    string = new char [size];
    strcpy (string, str);
    string [size] = '\0';
}

String :: String (const String &ob) {
    size = sizeof(ob.string) +1;
    string = new char [size];
    strcpy (string, ob.string);
    string[size] = '\0';
}

String :: ~String () {
    delete [] string;
}

void String :: show () {
    cout << string << endl;
}

String String :: operator = (const String &ob) {
    String temp;
    temp.string = new char [ob.size + 1];
    strcpy (temp.string, ob.string);
    temp.string [ob.size + 1] = '\0';
    return temp;
}

ostream& operator << (ostream& out , const String &ob) {
    out << ob.string;
    return out;

}
istream& operator >> (istream& in, const String &ob) {
    String temp;
    temp.string = ob.string;
    in >> temp.string;
    return in;
}

Ответы (0 шт):