How do you 'realloc' in C++?
Use ::std::vector!
Type* t = (Type*)malloc(sizeof(Type)*n)
memset(t, 0, sizeof(Type)*m)
becomes
::std::vector<Type> t(n, 0);
Then
t = (Type*)realloc(t, sizeof(Type) * n2);
becomes
t.resize(n2);
If you want to pass pointer into function, instead of
Foo(t)
use
Foo(&t[0])
It is absolutely correct C++ code, because vector is a smart C-array.
The right option is probably to use a container that does the work for you, like std::vector
.
new
and delete
cannot resize, because they allocate just enough memory to hold an object of the given type. The size of a given type will never change. There are new[]
and delete[]
but there's hardly ever a reason to use them.
What realloc
does in C is likely to be just a malloc
, memcpy
and free
, anyway, although memory managers are allowed to do something clever if there is enough contiguous free memory available.