Deallocates/releases resources held by the object.
Classes derived from OSObject should override this function to deallocate or release all dynamic resources held by the instance, then call the superclass's implementation.
You can not assume that you have completed initialization before
freeis called, so be very careful in your implementation.
OSObject's implementation performs the C++
deleteof the instance, so be sure that you call the superclass implementation last in your implementation.
freemust not fail; all resources must be deallocated or released on completion.