Is it possible to incrementally increase the amount of allocated memory on a free store that a pointer points to? For example, I know that this is possible.
char* p = new char; // allocates one char to free store
char* p = new char[10]; // allocates 10 chars to free store
but what if I wanted to do something like increase the amount of memory that a pointer points to. Something like…
char input;
char*p = 0;
while(cin >> input) // store input chars into an array in the free store
char* p = new char(input);
obviously this will just make p point to the new input allocated, but hopefully you understand that the objective is to add a new char allocation to the address that p points to, and store the latest input there. Is this possible? Or am I just stuck with allocating a set number.
You can do this using the function realloc(), though that may only work for memory allocated with malloc() rather than “new”
having said that, you probably don’t want to allocate more memory a byte at a time. For efficiency’s sake you should allocate in blocks substantially larger than a single byte and keep track of how much you’ve actually used.