If I understand your problem, you have a class which allocate some variable-length memory. There is two possible cases:
The memory contains C++ objects
You have no choice: The memory should be, directly or indirectly allocated with new because you need the constructors called.
If you want to have a realloc-like behaviour, then do not use new[]. Use instead a std::vector, which will handle all the allocation/reallocation/Free and construction/destruction correctly.
The memory is raw
You could either use new[] or malloc, because you are allocating PODs (an array of ints, or shorts, dumb structures, etc.).
But again, new[] won't offer you a realloc-like behaviour... But if you start using malloc, then you must do housekeeping, i.e. be sure to call free at the right time, memorize the size of the array somewhere, and perhaps even have a size different from the array capacity (i.e. you allocate more, to avoid doing too much reallocs).
And you know what? std::vector already do all this for you.
Conclusion
You are coding in C++, then the solution to your problem (i.e. allocating variable length memory inside a class), as already expressed by previous answers, is use std::vector.