If I call a destructor explicitly ( myObject.~Object() ) does this assure me that the object will be appropriately destroyed (calling all child destructors) ?
Ok so
Running the destructor does not free memory used by the object being destructed - the delete operator does that. Note, however, that the destructor may delete "child objects" and their memory will be freed as per usual.
You need to read up on placement new/delete as this allows you to control memory allocation and when constructors/destructors run.
See here for a little info:
http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.9