views:

575

answers:

2

Hello,

I am porting a project to the iPhone and it uses realloc and memcpy which are not found. What is the header to include? it's a projet mixing objc and c++ and I am starting to be lost.

Thanks in advance for your help!

+1  A: 

In C:

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

In C++, remove the .h and prefix with a c. In C++, they will be placed in the std namespace, but are also global.

GMan
A: 

In C++ it's more idiomatic to use std::copy than C's memcpy, although the latter does work just as well. To get std::copy, you need to #include <algorithm>.

There's not a direct C++ equivalent to realloc, though.

Tyler McHenry
If I could mark this answer as not useful with a comment, I would do so because it is incorrect. As GMan said, realloc is found in <cstdlib>.
David Harris
I did not say that it is not possible to use the C standard library function `realloc` in C++ (since, of course, the C++ standard library includes the entirety of the C89 standard library). I said that there is not a new C++ standard library function that encompasses the functionality of `realloc` as `std::copy` does for `memcpy`. Although I suppose my intent is not obvious if my answer is read in isolation as opposed to in conjunction with the other, already accepted answer.
Tyler McHenry