There's much much more wrong in that piece of code than just a plain pointer issue.
Besides the allocations you do every frame, there are also a lot more copy-constructor calls than you might expect.
Get rid of that; it may be just a Vec2 class but clean code doesnt hurt anyone. use const references, or just pass the position as 2 parameters.
Next point is ... why do you want to use a pointer anyway? Sprite classes usually store their position for collision detection or rendering or whatever.
And you do realize that pointers take up memory as well, right? Depending on the OS, the size is different. On Windows it's 4 byte if i remember correctly.
So basically you win nothing using your method.
true. And talking about efficiency. Malloc/new are quite expensive in terms of computation cost (if you compare it to just decreasing the stack pointer) and also lead to heap fragmentation.