Your understanding may be correct, but the statements are wrong:
A pointer to object
mhas been allocated on the stack.
m is the pointer. It is on the stack. Perhaps you meant pointer to a Member object.
The object
mitself (the data that it carries, as well as access to its methods) has been allocated on the heap.
Correct would be to say the object pointed by m is created on the heap
In general, any function/method local object and function parameters are created on the stack. Since m is a function local object, it is on the stack, but the object pointed to by m is on the heap.