malloc(…) is like reserving a hotel room. address variable (e.g., char* s) is like your card key. address is like the room number. free(…) is like checking out of the hotel. Once you've checked out, do not go back in the room. Once you have freed, do not touch the memory. Do not go beyond your allocated (reserved) space. Do not forget to check out (free(…)). Otherwise, the hotel will get slow and bogged down and may eventually run out of rooms (i.e., out of memory).