In any decent sized application, one of the most common activities is string manipulation at one level or another. One of the most common problems with string manipulation is the reallocation of memory strings depending on the size of input. The old school of memory allocation comprising of malloc and free provided a method called realloc for the purpose. The new school of Object Oriented memory allocators is not so flexible. Now, reallocation of memory has to be provided for by the developer. Here is a sample code snippet to achieve this purpose:
#define REALLOC_MEM(strIn, lCurrentSize, lNewSize){ char *strTemp = new char[lCurrentSize];//Creating _a temporary //string with current size strcpy(strTemp, strIn); //Copying data from current _string delete [] strIn; //Deleting the current string strIn = new char[lNewSize]; //Allocating new memory _with new size strcpy(strIn, strTemp); //copying the temp string _into the current delete [] strTemp; //Deleting the temp string}
This macro first assigns the current string to another temporary string and then allocates new memory to the first string and copies its contents back from the temporary string. This macro can be extended to reallocate memories for any other data types as well.