Memory optimizations

Two optimizations to improve Citra's memory allocation efficiency. More details in commit messages.

**Note that, due to #176, I haven't been able to test the second commit.** I have only proved it correct, not tried it.
Function always returns `-1`, so it can be deleted.