Ich bin normalerweise in C++ programmieren, aber einige clibrary Funktionen für meine char *. Einige der Hilfeseiten wie für 'getline', sagt, dass die Eingabe ein Malloced-Array sein sollte.gibt es einen Unterschied zwischen Malloced-Arrays und neue Arrays
Ist es in Ordnung, stattdessen 'neu' zu verwenden?
Ich kann für meine kleine Probe sehen, dass es funktioniert, aber könnte dies irgendwann zu einem seltsamen undefinierten Verhalten führen?
Ich weiß, dass ein "neues" mit einem "löschen" und ein "malloc" mit einem "frei" übereinstimmen sollte.
Ich verwende auch nicht std :: string. Und das ist beabsichtigt.
Dank
Nein, es ist nicht OK. Aber wenn Sie C++ verwenden, warum nicht std :: getline() verwenden? –
Immer wenn Sie in der Dokumentation etwas Ähnliches sehen, müssen Sie tiefer graben und herausfinden, ob sie einen 'malloced' Zeiger empfehlen, weil sie C Terminologie benutzen oder weil die Funktion realloc() oder free() aufrufen soll. Die Antworten mit den meisten Stimmen gehen von ersterem aus, obwohl ich glaube, dass die Funktion, auf die Sie sich beziehen, mit letzterem zu tun hat, wie Martin hervorhebt. Es ist nicht in Ordnung, malloc/free und new/delete falsch zu koppeln. Daher ist es am besten, zusätzliche Untersuchungen zu den spezifischen Funktionen durchzuführen, die Sie aufrufen, wenn dies geschieht. –