This article has focused on finding the right role for C++ amongst today's
other popular languages, and on understanding its most difficult aspect:
memory management. The tables of common memory-related errors presented here
can be used as a handy reference, to find and avoid such errors in your own
code. Subsequent articles of the series will continue to discuss C++ memory
management in greater detail.

The second
article will be devoted to describing the nature of the C++ memory
management mechanism, so that you can begin to apply it creatively in your
designs. After that, the third
article will present a series of specific techniques that you can use as
building blocks in your programs.

C++ memory management is an enormously useful tool for creating elegant
software. Having gained a clear awareness of its dangers, you are now ready to
understand its benefits. Enabling you to do so is, ultimately, the purpose of
this series of articles.

A number of very useful resources are available regarding C++. Notes on these resources are provided here (the Bibliography itself follows).

First, you need a book with broad coverage, which can serve as an
introduction, a reference, and for review. Ira Pohl's C++ by
Dissection [Poh02] is an example of such a book. It
features a particularly gentle ramp-up into working with the language.

In addition to a book with broad coverage, you will need books that focus
specifically on the most difficult aspects of the language and present
techniques to deal with them. Three titles that you should find very valuable
are Effective C++ [Mey98] and More Effective
C++ [Mey96] (both by Scott Meyers), and C++
FAQs [Cli95] by Marshall P. Cline and Greg A.
Lomow, which is also available in an online version.

The key to reading all three of these books is not to panic. They contain a
great deal of difficult technical details, and are broken up into a large
number of very specific topics. Unless you are merely reviewing material with
which you are already familiar, reading any of these books from cover to cover
is unlikely to be useful.

A good strategy is to allocate some time (even as little as 15 minutes)
each day to work with either of Meyers' books, or with C++ FAQs.
Begin your session by looking over the entire table of contents, which, in all
three books, has a very detailed listing of all of the items covered. Don't
ignore this important step; it will take you progressively less time as you
become familiar with each particular book.

Next, try to read the items that are most relevant to the current problem
that you are trying to solve, ones where you feel that you are weak, or even
those that seem most interesting to you. An item that looks completely
unfamiliar is also a good candidate — it is likely an important aspect of
C++ of which you are not yet aware.

Finally, when you want insights into bureaucracy, tips on what to do with
your icewater during NASA meetings (answer: dip booster rocket O-ring material
into it), or just a good laugh when you are frustrated with C++, try Richard P.
Feynman's "What Do You Care What Other People Think?" [Fey88]. The second
article in this series will describe why Feynman's book is so
important.