Dear Sir,
I am beginner in C++, and your book has been greatly helpful in learning this programming language. In your book, I have found an example which seems to have flaws.
Under the topic Dynamic Memory Allocation, there is an example to show a technique of reallocating memory as the values grow.
You say that the program reads in numbers from the user, and if the user enters more numbers than can fit in the array, the function int *growArray (int* p_values, int cur_size) will resize it.
In my attempt to understand the program I found that condition if (size == next_element + 1) never becomes true as next_element always remains 0, and so there is no chance of calling the function. But the program repeatedly prints the first element deceiving the user to make them think what the program is not doing.
We can, however, call function by incrementing next_element (i.e next_element++) and then check the if condition, but doing that also doesn’t solve the problem since the function doesn’t return the new value of cur_size (to size ) when it does return p_new_values;, but program does “allow the user to enter more new values” as next_element now exceeds the value of size and hence If condition never becomes true again.
I appreciate the effort you have put into the book to teach C++ to novice programmers like me. I hope to hear suggestions on writing the program correctly.
Thank you.
Sincerely,
Bikash Kunwar