No, that's not it at all. The OP was not talking about dynamic memory, he was talking about memory allocated on the stack (without using new/delete).
What happens is the system interprets the machine code and through all the different layers of hardware <-> OS <-> software, the memory gets marked as free.
when the destructor is called, as well as the member data, the object code is removed from memory, right? I mean, in computer architecture, there's that "program counter", and the object instance, which is a copied set of instructions from the class definition plus the data, is removed right?
to make it clearer; the question, what makes an instance of a class destroyed/destructed. as far as I know, when an object is created,
1. class code is placed in memory (program stack)
2. member data is placed in memory (stack and/or heap)
if there is no other instance of this class, when a destructor of an object has called, both the code and member data is removed, the occupied memory is marked as free. right?
when the destructor is called, as well as the member data, the object code is removed from memory, right?
It's marked as free memory. If you had a pointer to it you could still access it assuming that the free memory hadn't been allocated by something else.