heap-Beschädigung erkannt | C++

Bekomme ich diese " heap corruption detected " - Nachricht nach dem ausführen dieses Codes :

uli& uli::operator =(char* n)
{
    char* buffer = new char[strlen(n)];

    char* p;
    int op;
    int coef;

    strcpy(buffer, n);

    while(*buffer)
    {
        op = strlen(buffer) - 5;
        p = (op >= 0) ? op+buffer : buffer;
        coef = atoi(p);

        if(coef > 65535)
            coef = atoi(++p);

        push(head, coef);
        *p = '\0';
    }

    delete buffer;       // <- heap corruption detected

    return *this;
}

Dies ist, wie ich die Methode aufrufen:

uli x;
x = "9876123";

Was bedeutet "heap-Beschädigung erkannt" bedeuten ?

  • Verwenden delete [] buffer.
  • Haben Sie aber über ein Objekt mit dem Speicher. Vielleicht ein std::string statt char*.
  • ich bin nicht so gut
InformationsquelleAutor Jonas | 2012-03-04
Schreibe einen Kommentar