Source: https://cslibrary.stanford.edu/102/PointersAndMemory.pdf