Your understanding may be correct, but the statements are wrong:
A pointer to object
m
has been allocated on the stack.
m
is the pointer. It is on the stack. Perhaps you meant pointer to a Member
object.
The object
m
itself (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.