2010-02-17 12 views

Antwort

35

In C:

#include <string.h> // memcpy 
#include <stdlib.h> //realloc 

In C++, entfernen Sie den .h und Präfix mit einem c. In C++ werden sie im Namespace std platziert, sind aber auch global.

+0

Sie könnten '#ifdef __cplusplus' /' # else' verwenden, um automatisch die richtigen für C oder C++ einzuschließen. –

8

In C++ ist es idiomatisch, std::copy als memcpy von C zu verwenden, obwohl Letzteres genauso gut funktioniert. Um std::copy zu erhalten, müssen Sie #include <algorithm>.

Es gibt jedoch kein direktes C++ - Äquivalent zu realloc.

+2

Wenn ich diese Antwort als nicht nützlich mit einem Kommentar markieren könnte, würde ich dies tun, weil es falsch ist. Wie GMan sagte, Realloc ist in gefunden. –

+5

Ich habe nicht gesagt, dass es nicht möglich ist, die C-Standardbibliotheksfunktion 'realloc' in C++ zu verwenden (da die C++ - Standardbibliothek natürlich die Gesamtheit der C89-Standardbibliothek enthält). Ich sagte, dass es keine neue C++ - Standardbibliotheksfunktion gibt, die die Funktionalität von "realloc" umfasst, wie "std :: copy" das für "memcpy" tut. Obwohl ich meine Absicht nicht offensichtlich ist, wenn meine Antwort isoliert gelesen wird, im Gegensatz zu der anderen, bereits akzeptierten Antwort. –