I asked a question about this method:
// Save an object out to the disk
public static void SerializeObject(this T toSerialize, String filename)
{
You are correct that for properly written code the GC will eventually clean up the native resources. The object will have a finalizer, and during finalization will free up the necessary native resources.
However when this happens is very non-deterministic. Additionally it's a bit backwards because you're using the GC which designed to handle managed memory as a means to manage native resources. This leads to interesting cases and can cause native resources to stay alive much longer than anticipated leading to situations where
The using / dispose pattern adds determinism to the cleanup of native resources and removes these problems.