Just the brief descriptions from the cppreference.com documentation explain the differences very clearly for me
"1. What does destructor do? The documentation didn't talk about whether the memory will be released automatically when the destructor is called"
Any memory occupied by the
std::allocator instance will be released as usual.
destroyis used to call the destructor on a object, what does the "object" here means?"
Again to cite the detailed documentation
void destroy( pointer p ); // 1) template< class U > // 2) void destroy( U* p );
Calls the destructor of the object pointed to by p
Object in this context means an object of type
T managed by the