For instance in this example you were first allocating new memory to pointer dst. Then you were assigning dst to point to temp->next. So your original memory already gets leaked at this stage because after this statement, the address of that new memory gets lost.
You can refresh your dynamic memory and pointer basics by going through the tutorial on this site.