@ Dr.Boom you're not removing all leaks there.
The locations are set up in the loop, so you're only removing the leaks for 1 loop.
Let's say there are 100 instances running, then you still have 396 leaks

(99 * 4).
That's exactly what causes it I think: the other locations are based off the first ones.
If you remove the first ones, it will start flashing (the thing you see).
Coordinates are coordinates.
X and Y-values.
Like (0, 0) the center of the map.
Locations are a set of coordinates, but locations are handles and coördinates are reals.
Thus: coordinates are faster, as a location traces it's coordinates when you use it, while a coördinate is already a coordinate so it doesn't have to trace anything AND coordinates don't leak because they're reals and reals don't leak
From wikipedia:
You probably know this.
An X and an Y axis with a few points.
Put this in warcraft: the X- and Y-value of the points are coordinates.
The points themselves are locations.
Edit: downside of coordinates: you'll have to use custom scripts (or just completely JASS) to use them, as converting coords to a location still leaks a location (and you can't just use coords, unless you convert them to a location in GUI).