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.