About ten years ago, I wrote a C++ program to print out all the prime numbers less than a given number using trial division. I recently went back and looked at the program and realized how little I knew at the time. Even though my first CS class covered object-oriented programming in C++, we never really talked the about simply using the
new keyword on arrays to make use of dynamic arrays. The topic was covered in my second CS class, which I took three years later.
int *array; int array_size = 128; array = new int[array_size]; /* do somthing to fill the array */ int *temparray = new int[(array_size * 2)]; for (int i = 0; i < array_size; i++) temparray[i] = array[i]; array_size = array_size * 2; delete  array; array = temparray;
In the last few years, I have realized that for the simplest progrmas, C is often more efficient and straightforward than C++. In C, the code looks exactly the same, except that
new is replaced by
delete is replaced by
int *array; int *temparray; int array_size = 128; int i; array = malloc(array_size * sizeof(*array)); /* do somthing to fill the array */ temparray = malloc(array_size * 2 * sizeof(*temparray)); for (i = 0; i < array_size; i++) temparray[i] = array[i]; array_size = (array_size * 2); free(array); array = temparray;