The marker can be used to represent a position in the functions that require one, just as an integer could be used. See Positions , for a complete description of positions. But the marker's position value can change often during the life of the marker. Insertion and deletion of text in the buffer relocate the marker. The idea is that a marker positioned between two characters remains between those two characters despite insertion and deletion elsewhere in the buffer.
Relocation changes the integer equivalent of the marker.
Deleting text around a marker's position leaves the marker between the characters immediately before and after the deleted text. Insertion and deletion in a buffer must check all the markers and relocate them if necessary. This slows processing in a buffer with a large number of markers. For this reason, it is a good idea to make a marker point nowhere if you are sure you don't need it any more. Unreferenced markers are garbage collected eventually, but until then will continue to use time if they do point somewhere.