Rolf's C++ notes

Utilize the standard C++ library.

Part of the standard C++ library is based on the STL library developed by SGI. All good compilers should provide this library. Get comfortable with the features it provides. Learn to use the standard C++ include files and the std namespace. The Standard Template Library Programmer's Guide from SGI is a good place to look for documentation. Most of it applies for the standard C++ library even though the document is written for STL.

Be vary of low-level dynamic memory allocation.

For the most part, try to avoid code like this:


	MyType* myObject = new MyType();
	MyType* myArray  = new MyType[10]:
	delete[] myArray;
	delete myObject;

If an exception is thrown or control flow is otherwise interrupted between the new and delete statements, memory will be leaked. The code can be made safe using a try-catch block that performs the delete operations before rethrowing the exception.

The better and more general solution is to use datatypes that, unlike pointers, ensures that the memory is freed.

	// Stack allocation
	MyType myObject();
	MyType myArray[10];
	/* Will automatically be deallocated when variables go out
	   of scope. */


#include <memory>
#include <vector>
using namespace std;
	// Heap allocation
	auto_ptr<MyType> myObject(new myObject());
	vector<MyType>   myVector(10);
	/* Deconstructors of these types will automatically free the 
	   dynamically allocated memory when variables go out of
	   scope. */

The two examples above perform safe memory allocation, and will not leak memory, regardless of whether an exception is thrown, or control flow is interrupted in some other way.