Think about it: Memtest86 needs to store information about how large
the RAM is, what it put in RAM to compare later, where to update the
screen, and a lot more information. The act of using a variable
requires RAM to be functioning properly. But how can you get reliable
results when your running the program on possibly defective RAM?
Well, this is what Memtest does - it writes various (known) patterns to your RAM, reads it back, and compares. If there is a mis-match, your RAM has to be be corrupted.
An analogy to this is running a hard drive checking program from the
hard drive that your checking. You would never do that, a bad block
could affect the program in lots of unexpected ways
While this is true, there are some cases where you have no choice. So long as you can load the program successfully, it should be able to perform it's diagnostic tasks (even if it's running on a faulty media of some kind).
How does Memtest86 function with bad RAM?
Well, it has to load itself into memory first. In most cases, this memory will still be good. In the event that it is not, Memtest will most likely determine that the program itself is corrupted by comparing some in-place variables with a checksum. In the event that they don't match, you would instantly know that either your RAM is bad, or the copy you downloaded is corrupted (and it would be a trivial task to determine if the latter is the cause or not).
TL,DR: Memtest86+ only works assuming the first megabyte of your RAM is still fine (the location where it would be loaded most likely). Assuming this area is corrupted, Memtest86+ itself would simply not function (which is a pretty quick indicator your RAM is bad without even having run the tests).