This won't work because you asked memory for 1 int, not 3.
As I like to see pointers...
Imagine a big city. The city must be addressable (ie, each part of it must have an address). This is so someone knows where to go if you describe it (memory address).
Then let's imagine they need to build stuff. Houses, offices, factories, stores, etc (variables).
So let's say then that you are the head of a building company. You want to build something. But you simply do not have permission to just go and build somewhere somewhere. No sir. If you do, the police will arrest you (the OS will shut down your program).
Instead, you ask permission to build a number of buildings (next to each other). Say, 3 houses. The state then gives you clearance to build, and later, destroy what you build, and an address where these houses may be built (you call malloc/calloc).
So, you send your working team there and they build the houses (you assign values in the requested memory). But since you ask to build 3, you only have permission to build 3 and no more. If you try to build more, the police will arrest you.
Now, these houses will remain there, forever (let's forget the fact that they need maintenance). And they hog valuable space in the city. Eventually, if you keep building, there's not going to be any space left (you run out of memory).
So you then need to destroy those houses to eventually build other things there. And having destroyed them, you no longer have permission to build there. If you do, the police will arrest you.
This theory can be applied to dynamic memory.
The big city is the computer memory.
The police is the operating system.
Addresses are pointers.
Houses are variables such as int, float, char.
Permission is given by malloc/calloc.
You send your team to build the house by storing data using the dereference operator (*).
You destroy what you built with free.
So you request space in memory with malloc.
You store the address in a pointer.
You dereference the pointer to store a value.
You call free to get rid of the memory you no longer need.
Also, as you know, it is possible to get away with doing something illegal without the police catching you (your program may crash, and it might not). You might get away with it, and you might not. But you should keep yourself to within the walls of the law (then there will be 0% chance of your app crashing).
Doing something illegal is often caused undefined behavior in the programming world (because it might lead to undesired results, and it might not).