Sofern Sie nicht gezwungen sind, C zu verwenden, sollten Sie niemals verwenden malloc
. Immer verwenden new
.
Wenn Sie eine große Menge an Daten benötigen, tun Sie einfach etwas wie:
char *pBuffer = new char[1024];
Aber Vorsicht, das ist nicht korrekt:
//This is incorrect - may delete only one element, may corrupt the heap, or worse...
delete pBuffer;
Stattdessen sollten Sie dies tun, wenn Sie ein Array von Daten löschen:
//This deletes all items in the array
delete[] pBuffer;
Le site new
Schlüsselwort ist die C++-Methode, die sicherstellt, dass Ihr Typ seine Konstruktor genannt . Die new
Stichwort ist auch mehr Typsicher während malloc
ist überhaupt nicht typsicher.
Die einzige Möglichkeit, die ich mir vorstellen kann, ist, dass es vorteilhaft wäre, die malloc
wäre, wenn Sie die Größe des Puffers ändern der Daten. Die Website new
Schlüsselwort gibt es keine analoge Möglichkeit wie realloc
. Die realloc
Funktion kann die Größe eines Speicherabschnitts möglicherweise effizienter erweitern.
Es ist erwähnenswert, dass Sie nicht mischen können new
/ free
y malloc
/ delete
.
Hinweis: Einige Antworten auf diese Frage sind ungültig.
int* p_scalar = new int(5); // Does not create 5 elements, but initializes to 5
int* p_array = new int[5]; // Creates 5 elements