malloc in new ändern



  • Hallo Leute,

    ich möchte eine C-Funktion in eine C++-Funktion umprogrammieren. So weit so gut, aber die C- Funktion enthält eine dynamische Speicherzuweisung mit malloc. Anstelle des Befehls malloc wird in C++ der Befehl new verwendet. Leider bekomme ich es nicht hin den new-Befehl zu verwenden. Vielleicht kann mir jemand helfen?

    Aus der C-Zeile:

    tempbuff = malloc(sizeof(unsigned char) * size);
    

    habe ich die C++-Zeile

    tempbuff = new(sizeof(unsigned char) * size);
    

    gemacht, leider ohne Erfolg.

    Hat jemand eine Idee?

    Hier die komplette C-Funktion:

    int PollComportMs(int comport_number, unsigned char *buf, int size, int ms) {
    int i;
    int readedBytes;
    unsigned char* tempbuff;
    struct timeval time1, time2;
     :confused: tempbuff = malloc(sizeof(unsigned char) * size);
     :confused: memset(tempbuff, 0, sizeof(unsigned char) * size);
    gettimeofday(&time1, 0);
    i = 0;
    do {
    readedBytes = PollComport(comport_number, &tempbuff[i], 1);
    if (readedBytes == -1) {
    return 1;
    }
    gettimeofday(&time2, 0);
    if ((time2.tv_usec - time1.tv_usec) > ms) {
    //time is over
    return 1;
    }
    if (tempbuff[i] == '\n') {
    break;
    } else {
    i += readedBytes;
    }
    } while (i < size);
     :confused: memcpy(buf, tempbuff, size);
    free(tempbuff);
    return 0;
    }
    

    Die nächste Frage ist, funktioniert die C++-Funktion mit den Befehlen memset und memcpy?
    Die gettimeofday-Funktion werde ich ersetzen mit der Funktion GetSystemTime().
    Vielen Dank für die Hilfe.

    Grüße

    datatom



  • Beispiel:

    char *p=new char[500];
    

    (zum Aufräumen delete[] benutzen, nicht delete!)



  • Oder gleich ...

    std::vector<unsigned char> tempbuff_vector(size);
    char* tempbuff = &tempbuff_vector[0];
    

    ... und automatisch aufräumen lassen.


Anmelden zum Antworten