If we modify the previous example to add a loop to repeat the 3 steps, we create garbage each time the nums pointer is assigned a new dynamic array.
int main() { int sz; bool more = true; string ans; printDirections(); while( more ) { cout << "How many integers to generate and sort? "; cin >> sz; int *nums = new int[sz]; init(nums, sz); sort(nums, sz); print(nums, sz); cout << "\nAgain? [y/n] "; cin >> ans; if (ans == "n") { more = false; } } return 0; }